Lines Matching refs:smbdev
33 struct psmouse_smbus_dev *smbdev; in psmouse_smbus_check_adapter() local
40 list_for_each_entry(smbdev, &psmouse_smbus_list, node) { in psmouse_smbus_check_adapter()
41 if (smbdev->dead) in psmouse_smbus_check_adapter()
44 if (smbdev->client) in psmouse_smbus_check_adapter()
54 psmouse_dbg(smbdev->psmouse, in psmouse_smbus_check_adapter()
56 serio_rescan(smbdev->psmouse->ps2dev.serio); in psmouse_smbus_check_adapter()
64 struct psmouse_smbus_dev *smbdev, *tmp; in psmouse_smbus_detach_i2c_client() local
68 list_for_each_entry_safe(smbdev, tmp, &psmouse_smbus_list, node) { in psmouse_smbus_detach_i2c_client()
69 if (smbdev->client != client) in psmouse_smbus_detach_i2c_client()
75 if (!smbdev->dead) { in psmouse_smbus_detach_i2c_client()
76 psmouse_dbg(smbdev->psmouse, in psmouse_smbus_detach_i2c_client()
78 dev_name(&smbdev->client->dev)); in psmouse_smbus_detach_i2c_client()
79 smbdev->dead = true; in psmouse_smbus_detach_i2c_client()
80 device_link_remove(&smbdev->client->dev, in psmouse_smbus_detach_i2c_client()
81 &smbdev->psmouse->ps2dev.serio->dev); in psmouse_smbus_detach_i2c_client()
82 serio_rescan(smbdev->psmouse->ps2dev.serio); in psmouse_smbus_detach_i2c_client()
84 list_del(&smbdev->node); in psmouse_smbus_detach_i2c_client()
85 kfree(smbdev); in psmouse_smbus_detach_i2c_client()
123 struct psmouse_smbus_dev *smbdev = psmouse->private; in psmouse_smbus_reconnect() local
125 if (smbdev->need_deactivate) in psmouse_smbus_reconnect()
172 struct psmouse_smbus_dev *smbdev = psmouse->private; in psmouse_smbus_disconnect() local
176 if (smbdev->dead) { in psmouse_smbus_disconnect()
177 list_del(&smbdev->node); in psmouse_smbus_disconnect()
178 kfree(smbdev); in psmouse_smbus_disconnect()
180 smbdev->dead = true; in psmouse_smbus_disconnect()
181 device_link_remove(&smbdev->client->dev, in psmouse_smbus_disconnect()
183 psmouse_dbg(smbdev->psmouse, in psmouse_smbus_disconnect()
185 dev_name(&smbdev->client->dev)); in psmouse_smbus_disconnect()
186 psmouse_smbus_schedule_remove(smbdev->client); in psmouse_smbus_disconnect()
196 struct psmouse_smbus_dev *smbdev = data; in psmouse_smbus_create_companion() local
197 unsigned short addr_list[] = { smbdev->board.addr, I2C_CLIENT_END }; in psmouse_smbus_create_companion()
208 client = i2c_new_scanned_device(adapter, &smbdev->board, in psmouse_smbus_create_companion()
214 smbdev->client = client; in psmouse_smbus_create_companion()
220 struct psmouse_smbus_dev *smbdev, *tmp; in psmouse_smbus_cleanup() local
224 list_for_each_entry_safe(smbdev, tmp, &psmouse_smbus_list, node) { in psmouse_smbus_cleanup()
225 if (psmouse == smbdev->psmouse) { in psmouse_smbus_cleanup()
226 list_del(&smbdev->node); in psmouse_smbus_cleanup()
227 kfree(smbdev); in psmouse_smbus_cleanup()
240 struct psmouse_smbus_dev *smbdev; in psmouse_smbus_init() local
243 smbdev = kzalloc(sizeof(*smbdev), GFP_KERNEL); in psmouse_smbus_init()
244 if (!smbdev) in psmouse_smbus_init()
247 smbdev->psmouse = psmouse; in psmouse_smbus_init()
248 smbdev->board = *board; in psmouse_smbus_init()
249 smbdev->need_deactivate = need_deactivate; in psmouse_smbus_init()
252 smbdev->board.platform_data = kmemdup(pdata, pdata_size, in psmouse_smbus_init()
254 if (!smbdev->board.platform_data) { in psmouse_smbus_init()
255 kfree(smbdev); in psmouse_smbus_init()
263 psmouse->private = smbdev; in psmouse_smbus_init()
271 list_add_tail(&smbdev->node, &psmouse_smbus_list); in psmouse_smbus_init()
275 error = i2c_for_each_dev(smbdev, psmouse_smbus_create_companion); in psmouse_smbus_init()
277 if (smbdev->client) { in psmouse_smbus_init()
279 if (!device_link_add(&smbdev->client->dev, in psmouse_smbus_init()
284 dev_name(&smbdev->client->dev)); in psmouse_smbus_init()
292 kfree(smbdev->board.platform_data); in psmouse_smbus_init()
293 smbdev->board.platform_data = NULL; in psmouse_smbus_init()
297 list_del(&smbdev->node); in psmouse_smbus_init()
300 kfree(smbdev); in psmouse_smbus_init()