@@ -116,6 +116,13 @@ static DEFINE_MUTEX(psmouse_mutex);
116116
117117static struct workqueue_struct * kpsmoused_wq ;
118118
119+ struct psmouse * psmouse_from_serio (struct serio * serio )
120+ {
121+ struct ps2dev * ps2dev = serio_get_drvdata (serio );
122+
123+ return container_of (ps2dev , struct psmouse , ps2dev );
124+ }
125+
119126void psmouse_report_standard_buttons (struct input_dev * dev , u8 buttons )
120127{
121128 input_report_key (dev , BTN_LEFT , buttons & BIT (0 ));
@@ -336,7 +343,7 @@ static void psmouse_handle_oob_data(struct psmouse *psmouse, u8 data)
336343static irqreturn_t psmouse_interrupt (struct serio * serio ,
337344 u8 data , unsigned int flags )
338345{
339- struct psmouse * psmouse = serio_get_drvdata (serio );
346+ struct psmouse * psmouse = psmouse_from_serio (serio );
340347
341348 if (psmouse -> state == PSMOUSE_IGNORE )
342349 goto out ;
@@ -1344,7 +1351,7 @@ static void psmouse_resync(struct work_struct *work)
13441351 goto out ;
13451352
13461353 if (serio -> parent && serio -> id .type == SERIO_PS_PSTHRU ) {
1347- parent = serio_get_drvdata (serio -> parent );
1354+ parent = psmouse_from_serio (serio -> parent );
13481355 psmouse_deactivate (parent );
13491356 }
13501357
@@ -1428,13 +1435,13 @@ static void psmouse_resync(struct work_struct *work)
14281435 */
14291436static void psmouse_cleanup (struct serio * serio )
14301437{
1431- struct psmouse * psmouse = serio_get_drvdata (serio );
1438+ struct psmouse * psmouse = psmouse_from_serio (serio );
14321439 struct psmouse * parent = NULL ;
14331440
14341441 mutex_lock (& psmouse_mutex );
14351442
14361443 if (serio -> parent && serio -> id .type == SERIO_PS_PSTHRU ) {
1437- parent = serio_get_drvdata (serio -> parent );
1444+ parent = psmouse_from_serio (serio -> parent );
14381445 psmouse_deactivate (parent );
14391446 }
14401447
@@ -1476,7 +1483,7 @@ static void psmouse_cleanup(struct serio *serio)
14761483 */
14771484static void psmouse_disconnect (struct serio * serio )
14781485{
1479- struct psmouse * psmouse = serio_get_drvdata (serio );
1486+ struct psmouse * psmouse = psmouse_from_serio (serio );
14801487 struct psmouse * parent = NULL ;
14811488
14821489 mutex_lock (& psmouse_mutex );
@@ -1489,7 +1496,7 @@ static void psmouse_disconnect(struct serio *serio)
14891496 mutex_lock (& psmouse_mutex );
14901497
14911498 if (serio -> parent && serio -> id .type == SERIO_PS_PSTHRU ) {
1492- parent = serio_get_drvdata (serio -> parent );
1499+ parent = psmouse_from_serio (serio -> parent );
14931500 psmouse_deactivate (parent );
14941501 }
14951502
@@ -1588,7 +1595,7 @@ static int psmouse_connect(struct serio *serio, struct serio_driver *drv)
15881595 * connected to this port can be successfully identified
15891596 */
15901597 if (serio -> parent && serio -> id .type == SERIO_PS_PSTHRU ) {
1591- parent = serio_get_drvdata (serio -> parent );
1598+ parent = psmouse_from_serio (serio -> parent );
15921599 psmouse_deactivate (parent );
15931600 }
15941601
@@ -1604,8 +1611,6 @@ static int psmouse_connect(struct serio *serio, struct serio_driver *drv)
16041611
16051612 psmouse_set_state (psmouse , PSMOUSE_INITIALIZING );
16061613
1607- serio_set_drvdata (serio , psmouse );
1608-
16091614 error = serio_open (serio , drv );
16101615 if (error )
16111616 goto err_clear_drvdata ;
@@ -1676,7 +1681,7 @@ static int psmouse_connect(struct serio *serio, struct serio_driver *drv)
16761681
16771682static int __psmouse_reconnect (struct serio * serio , bool fast_reconnect )
16781683{
1679- struct psmouse * psmouse = serio_get_drvdata (serio );
1684+ struct psmouse * psmouse = psmouse_from_serio (serio );
16801685 struct psmouse * parent = NULL ;
16811686 int (* reconnect_handler )(struct psmouse * );
16821687 enum psmouse_type type ;
@@ -1695,7 +1700,7 @@ static int __psmouse_reconnect(struct serio *serio, bool fast_reconnect)
16951700 }
16961701
16971702 if (serio -> parent && serio -> id .type == SERIO_PS_PSTHRU ) {
1698- parent = serio_get_drvdata (serio -> parent );
1703+ parent = psmouse_from_serio (serio -> parent );
16991704 psmouse_deactivate (parent );
17001705 }
17011706
@@ -1794,7 +1799,7 @@ ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *de
17941799{
17951800 struct serio * serio = to_serio_port (dev );
17961801 struct psmouse_attribute * attr = to_psmouse_attr (devattr );
1797- struct psmouse * psmouse = serio_get_drvdata (serio );
1802+ struct psmouse * psmouse = psmouse_from_serio (serio );
17981803
17991804 if (psmouse -> protocol -> smbus_companion &&
18001805 devattr != & psmouse_attr_protocol .dattr )
@@ -1815,7 +1820,7 @@ ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *dev
18151820 if (retval )
18161821 goto out ;
18171822
1818- psmouse = serio_get_drvdata (serio );
1823+ psmouse = psmouse_from_serio (serio );
18191824
18201825 if (psmouse -> protocol -> smbus_companion &&
18211826 devattr != & psmouse_attr_protocol .dattr ) {
@@ -1830,7 +1835,7 @@ ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *dev
18301835 }
18311836
18321837 if (serio -> parent && serio -> id .type == SERIO_PS_PSTHRU ) {
1833- parent = serio_get_drvdata (serio -> parent );
1838+ parent = psmouse_from_serio (serio -> parent );
18341839 psmouse_deactivate (parent );
18351840 }
18361841
@@ -1925,7 +1930,7 @@ static ssize_t psmouse_attr_set_protocol(struct psmouse *psmouse, void *data, co
19251930 }
19261931
19271932 if (serio -> parent && serio -> id .type == SERIO_PS_PSTHRU ) {
1928- parent = serio_get_drvdata (serio -> parent );
1933+ parent = psmouse_from_serio (serio -> parent );
19291934 if (parent -> pt_deactivate )
19301935 parent -> pt_deactivate (parent );
19311936 }
0 commit comments