Lines Matching refs:lp
47 static short read_state(struct kp_data *lp) in read_state() argument
51 i2c_smbus_write_byte(lp->client, 240); in read_state()
52 x = 0xF & (~(i2c_smbus_read_byte(lp->client) >> 4)); in read_state()
54 i2c_smbus_write_byte(lp->client, 15); in read_state()
55 y = 0xF & (~i2c_smbus_read_byte(lp->client)); in read_state()
67 struct kp_data *lp = dev_id; in pcf8574_kp_irq_handler() local
68 unsigned char nextstate = read_state(lp); in pcf8574_kp_irq_handler()
70 if (lp->laststate != nextstate) { in pcf8574_kp_irq_handler()
71 int key_down = nextstate < ARRAY_SIZE(lp->btncode); in pcf8574_kp_irq_handler()
73 lp->btncode[nextstate] : lp->btncode[lp->laststate]; in pcf8574_kp_irq_handler()
75 input_report_key(lp->idev, keycode, key_down); in pcf8574_kp_irq_handler()
76 input_sync(lp->idev); in pcf8574_kp_irq_handler()
78 lp->laststate = nextstate; in pcf8574_kp_irq_handler()
88 struct kp_data *lp; in pcf8574_kp_probe() local
95 lp = kzalloc(sizeof(*lp), GFP_KERNEL); in pcf8574_kp_probe()
96 if (!lp) in pcf8574_kp_probe()
106 lp->idev = idev; in pcf8574_kp_probe()
107 lp->client = client; in pcf8574_kp_probe()
110 idev->keycode = lp->btncode; in pcf8574_kp_probe()
111 idev->keycodesize = sizeof(lp->btncode[0]); in pcf8574_kp_probe()
112 idev->keycodemax = ARRAY_SIZE(lp->btncode); in pcf8574_kp_probe()
115 if (lp->btncode[i] <= KEY_MAX) { in pcf8574_kp_probe()
116 lp->btncode[i] = pcf8574_kp_btncode[i]; in pcf8574_kp_probe()
117 __set_bit(lp->btncode[i], idev->keybit); in pcf8574_kp_probe()
122 sprintf(lp->name, DRV_NAME); in pcf8574_kp_probe()
123 sprintf(lp->phys, "kp_data/input0"); in pcf8574_kp_probe()
125 idev->name = lp->name; in pcf8574_kp_probe()
126 idev->phys = lp->phys; in pcf8574_kp_probe()
132 lp->laststate = read_state(lp); in pcf8574_kp_probe()
136 DRV_NAME, lp); in pcf8574_kp_probe()
148 i2c_set_clientdata(client, lp); in pcf8574_kp_probe()
152 free_irq(client->irq, lp); in pcf8574_kp_probe()
156 kfree(lp); in pcf8574_kp_probe()
163 struct kp_data *lp = i2c_get_clientdata(client); in pcf8574_kp_remove() local
165 free_irq(client->irq, lp); in pcf8574_kp_remove()
167 input_unregister_device(lp->idev); in pcf8574_kp_remove()
168 kfree(lp); in pcf8574_kp_remove()