Lines Matching refs:cd

50 static void do_reset(struct controller_priv *cd, u8 rst_bit, bool reset)
52 mutex_lock(&cd->ctrl_lock);
55 * cd->control_reg
58 cd->control_reg &= ~rst_bit;
60 cd->control_reg |= rst_bit;
61 writeb(cd->control_reg, cd->cpld_base + CPLD_CONTROL);
73 mutex_unlock(&cd->ctrl_lock);
76 static int anybuss_reset(struct controller_priv *cd,
81 if (cd->common_reset)
82 do_reset(cd, CPLD_CONTROL_CRST, reset);
84 do_reset(cd, id ? CPLD_CONTROL_RST2 : CPLD_CONTROL_RST1, reset);
90 struct controller_priv *cd = dev_get_drvdata(dev);
92 anybuss_reset(cd, 0, assert);
97 struct controller_priv *cd = dev_get_drvdata(dev);
99 anybuss_reset(cd, 1, assert);
167 struct controller_priv *cd = dev_get_drvdata(dev);
169 return sprintf(buf, "%s\n", cd->version);
176 struct controller_priv *cd = dev_get_drvdata(dev);
178 return sprintf(buf, "%d\n", cd->design_no);
204 struct controller_priv *cd = rdev_get_drvdata(rdev);
206 return !(readb(cd->cpld_base + CPLD_STATUS1) & CPLD_STATUS1_CAN_POWER);
229 struct controller_priv *cd;
237 cd = devm_kzalloc(dev, sizeof(*cd), GFP_KERNEL);
238 if (!cd)
240 dev_set_drvdata(dev, cd);
241 mutex_init(&cd->ctrl_lock);
242 cd->reset_gpiod = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
243 if (IS_ERR(cd->reset_gpiod))
244 return PTR_ERR(cd->reset_gpiod);
247 cd->cpld_base = devm_platform_ioremap_resource(pdev, 0);
248 if (IS_ERR(cd->cpld_base)) {
251 err = PTR_ERR(cd->cpld_base);
256 status1 = readb(cd->cpld_base + CPLD_STATUS1);
257 cd->design_no = (readb(cd->cpld_base + CPLD_DESIGN_HI) << 8) |
258 readb(cd->cpld_base + CPLD_DESIGN_LO);
259 snprintf(cd->version, sizeof(cd->version), "%c%d",
263 cd->design_no,
264 cd->version);
265 cap = readb(cd->cpld_base + CPLD_CAP);
274 cd->common_reset = !(cap & CPLD_CAP_SEP_RESETS);
275 dev_info(dev, "supports %s", cd->common_reset ?
295 config.driver_data = cd;
302 cd->class_dev = kzalloc(sizeof(*cd->class_dev), GFP_KERNEL);
303 if (!cd->class_dev) {
307 cd->class_dev->class = &controller_class;
308 cd->class_dev->groups = controller_attribute_groups;
309 cd->class_dev->parent = dev;
310 cd->class_dev->id = id;
311 cd->class_dev->release = controller_device_release;
312 dev_set_name(cd->class_dev, "%d", cd->class_dev->id);
313 dev_set_drvdata(cd->class_dev, cd);
314 err = device_register(cd->class_dev);
319 put_device(cd->class_dev);
323 gpiod_set_value_cansleep(cd->reset_gpiod, 1);
329 struct controller_priv *cd = platform_get_drvdata(pdev);
330 int id = cd->class_dev->id;
332 device_unregister(cd->class_dev);
334 gpiod_set_value_cansleep(cd->reset_gpiod, 1);