Lines Matching +full:input +full:- +full:value

1 // SPDX-License-Identifier: GPL-2.0
11 #include <linux/input.h>
20 #include <asm/intel-family.h>
25 #define MSIC_PB_LEVEL (1 << 3) /* 1 - release, 0 - press */
34 #define BCOVE_PB_LEVEL (1 << 4) /* 1 - release, 0 - press */
45 struct input_dev *input; member
53 static int mid_pbstat(struct mid_pb_ddata *ddata, int *value) in mid_pbstat() argument
55 struct input_dev *input = ddata->input; in mid_pbstat() local
59 ret = intel_scu_ipc_dev_ioread8(ddata->scu, ddata->pbstat_addr, in mid_pbstat()
64 dev_dbg(input->dev.parent, "PB_INT status= %d\n", pbstat); in mid_pbstat()
66 *value = !(pbstat & ddata->pbstat_mask); in mid_pbstat()
72 return intel_scu_ipc_dev_update(ddata->scu, ddata->mirqlvl1_addr, 0, in mid_irq_ack()
79 intel_scu_ipc_dev_update(ddata->scu, BCOVE_PBIRQ, 0, MSIC_PWRBTNM); in mrfld_setup()
80 intel_scu_ipc_dev_update(ddata->scu, BCOVE_PBIRQMASK, 0, MSIC_PWRBTNM); in mrfld_setup()
88 struct input_dev *input = ddata->input; in mid_pb_isr() local
89 int value = 0; in mid_pb_isr() local
92 ret = mid_pbstat(ddata, &value); in mid_pb_isr()
94 dev_err(input->dev.parent, in mid_pb_isr()
97 input_event(input, EV_KEY, KEY_POWER, value); in mid_pb_isr()
98 input_sync(input); in mid_pb_isr()
128 struct input_dev *input; in mid_pb_probe() local
134 return -ENODEV; in mid_pb_probe()
137 dev_err(&pdev->dev, "Failed to get IRQ: %d\n", irq); in mid_pb_probe()
141 input = devm_input_allocate_device(&pdev->dev); in mid_pb_probe()
142 if (!input) in mid_pb_probe()
143 return -ENOMEM; in mid_pb_probe()
145 input->name = pdev->name; in mid_pb_probe()
146 input->phys = "power-button/input0"; in mid_pb_probe()
147 input->id.bustype = BUS_HOST; in mid_pb_probe()
148 input->dev.parent = &pdev->dev; in mid_pb_probe()
150 input_set_capability(input, EV_KEY, KEY_POWER); in mid_pb_probe()
152 ddata = devm_kmemdup(&pdev->dev, (void *)id->driver_data, in mid_pb_probe()
155 return -ENOMEM; in mid_pb_probe()
157 ddata->dev = &pdev->dev; in mid_pb_probe()
158 ddata->irq = irq; in mid_pb_probe()
159 ddata->input = input; in mid_pb_probe()
161 if (ddata->setup) { in mid_pb_probe()
162 error = ddata->setup(ddata); in mid_pb_probe()
167 ddata->scu = devm_intel_scu_ipc_dev_get(&pdev->dev); in mid_pb_probe()
168 if (!ddata->scu) in mid_pb_probe()
169 return -EPROBE_DEFER; in mid_pb_probe()
171 error = devm_request_threaded_irq(&pdev->dev, irq, NULL, mid_pb_isr, in mid_pb_probe()
174 dev_err(&pdev->dev, in mid_pb_probe()
179 error = input_register_device(input); in mid_pb_probe()
181 dev_err(&pdev->dev, in mid_pb_probe()
182 "Unable to register input dev, error %d\n", error); in mid_pb_probe()
200 dev_err(&pdev->dev, in mid_pb_probe()
206 device_init_wakeup(&pdev->dev, true); in mid_pb_probe()
207 dev_pm_set_wake_irq(&pdev->dev, irq); in mid_pb_probe()
214 dev_pm_clear_wake_irq(&pdev->dev); in mid_pb_remove()
215 device_init_wakeup(&pdev->dev, false); in mid_pb_remove()