Lines Matching +full:power +full:- +full:button

4  * Based on twl4030-pwrbutton driver by:
5 * Peter De Schrijver <peter.de-schrijver@nokia.com>
19 * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
61 mc13xxx_irq_ack(priv->mc13783, irq); in button_irq()
62 mc13xxx_reg_read(priv->mc13783, MC13783_REG_INTERRUPT_SENSE_1, &val); in button_irq()
67 if (priv->flags & MC13783_PWRB_B1_POL_INVERT) in button_irq()
69 input_report_key(priv->pwr, priv->keymap[0], val); in button_irq()
74 if (priv->flags & MC13783_PWRB_B2_POL_INVERT) in button_irq()
76 input_report_key(priv->pwr, priv->keymap[1], val); in button_irq()
81 if (priv->flags & MC13783_PWRB_B3_POL_INVERT) in button_irq()
83 input_report_key(priv->pwr, priv->keymap[2], val); in button_irq()
87 input_sync(priv->pwr); in button_irq()
95 struct mc13xxx *mc13783 = dev_get_drvdata(pdev->dev.parent); in mc13783_pwrbutton_probe()
101 pdata = dev_get_platdata(&pdev->dev); in mc13783_pwrbutton_probe()
103 dev_err(&pdev->dev, "missing platform data\n"); in mc13783_pwrbutton_probe()
104 return -ENODEV; in mc13783_pwrbutton_probe()
109 dev_dbg(&pdev->dev, "Can't allocate power button\n"); in mc13783_pwrbutton_probe()
110 return -ENOMEM; in mc13783_pwrbutton_probe()
115 err = -ENOMEM; in mc13783_pwrbutton_probe()
116 dev_dbg(&pdev->dev, "Can't allocate power button\n"); in mc13783_pwrbutton_probe()
120 reg |= (pdata->b1on_flags & 0x3) << MC13783_POWER_CONTROL_2_ON1BDBNC; in mc13783_pwrbutton_probe()
121 reg |= (pdata->b2on_flags & 0x3) << MC13783_POWER_CONTROL_2_ON2BDBNC; in mc13783_pwrbutton_probe()
122 reg |= (pdata->b3on_flags & 0x3) << MC13783_POWER_CONTROL_2_ON3BDBNC; in mc13783_pwrbutton_probe()
124 priv->pwr = pwr; in mc13783_pwrbutton_probe()
125 priv->mc13783 = mc13783; in mc13783_pwrbutton_probe()
129 if (pdata->b1on_flags & MC13783_BUTTON_ENABLE) { in mc13783_pwrbutton_probe()
130 priv->keymap[0] = pdata->b1on_key; in mc13783_pwrbutton_probe()
131 if (pdata->b1on_key != KEY_RESERVED) in mc13783_pwrbutton_probe()
132 __set_bit(pdata->b1on_key, pwr->keybit); in mc13783_pwrbutton_probe()
134 if (pdata->b1on_flags & MC13783_BUTTON_POL_INVERT) in mc13783_pwrbutton_probe()
135 priv->flags |= MC13783_PWRB_B1_POL_INVERT; in mc13783_pwrbutton_probe()
137 if (pdata->b1on_flags & MC13783_BUTTON_RESET_EN) in mc13783_pwrbutton_probe()
143 dev_dbg(&pdev->dev, "Can't request irq\n"); in mc13783_pwrbutton_probe()
148 if (pdata->b2on_flags & MC13783_BUTTON_ENABLE) { in mc13783_pwrbutton_probe()
149 priv->keymap[1] = pdata->b2on_key; in mc13783_pwrbutton_probe()
150 if (pdata->b2on_key != KEY_RESERVED) in mc13783_pwrbutton_probe()
151 __set_bit(pdata->b2on_key, pwr->keybit); in mc13783_pwrbutton_probe()
153 if (pdata->b2on_flags & MC13783_BUTTON_POL_INVERT) in mc13783_pwrbutton_probe()
154 priv->flags |= MC13783_PWRB_B2_POL_INVERT; in mc13783_pwrbutton_probe()
156 if (pdata->b2on_flags & MC13783_BUTTON_RESET_EN) in mc13783_pwrbutton_probe()
162 dev_dbg(&pdev->dev, "Can't request irq\n"); in mc13783_pwrbutton_probe()
167 if (pdata->b3on_flags & MC13783_BUTTON_ENABLE) { in mc13783_pwrbutton_probe()
168 priv->keymap[2] = pdata->b3on_key; in mc13783_pwrbutton_probe()
169 if (pdata->b3on_key != KEY_RESERVED) in mc13783_pwrbutton_probe()
170 __set_bit(pdata->b3on_key, pwr->keybit); in mc13783_pwrbutton_probe()
172 if (pdata->b3on_flags & MC13783_BUTTON_POL_INVERT) in mc13783_pwrbutton_probe()
173 priv->flags |= MC13783_PWRB_B3_POL_INVERT; in mc13783_pwrbutton_probe()
175 if (pdata->b3on_flags & MC13783_BUTTON_RESET_EN) in mc13783_pwrbutton_probe()
181 dev_dbg(&pdev->dev, "Can't request irq: %d\n", err); in mc13783_pwrbutton_probe()
190 pwr->name = "mc13783_pwrbutton"; in mc13783_pwrbutton_probe()
191 pwr->phys = "mc13783_pwrbutton/input0"; in mc13783_pwrbutton_probe()
192 pwr->dev.parent = &pdev->dev; in mc13783_pwrbutton_probe()
194 pwr->keycode = priv->keymap; in mc13783_pwrbutton_probe()
195 pwr->keycodemax = ARRAY_SIZE(priv->keymap); in mc13783_pwrbutton_probe()
196 pwr->keycodesize = sizeof(priv->keymap[0]); in mc13783_pwrbutton_probe()
197 __set_bit(EV_KEY, pwr->evbit); in mc13783_pwrbutton_probe()
201 dev_dbg(&pdev->dev, "Can't register power button: %d\n", err); in mc13783_pwrbutton_probe()
212 if (pdata->b3on_flags & MC13783_BUTTON_ENABLE) in mc13783_pwrbutton_probe()
216 if (pdata->b2on_flags & MC13783_BUTTON_ENABLE) in mc13783_pwrbutton_probe()
220 if (pdata->b1on_flags & MC13783_BUTTON_ENABLE) in mc13783_pwrbutton_probe()
238 pdata = dev_get_platdata(&pdev->dev); in mc13783_pwrbutton_remove()
240 mc13xxx_lock(priv->mc13783); in mc13783_pwrbutton_remove()
242 if (pdata->b3on_flags & MC13783_BUTTON_ENABLE) in mc13783_pwrbutton_remove()
243 mc13xxx_irq_free(priv->mc13783, MC13783_IRQ_ONOFD3, priv); in mc13783_pwrbutton_remove()
244 if (pdata->b2on_flags & MC13783_BUTTON_ENABLE) in mc13783_pwrbutton_remove()
245 mc13xxx_irq_free(priv->mc13783, MC13783_IRQ_ONOFD2, priv); in mc13783_pwrbutton_remove()
246 if (pdata->b1on_flags & MC13783_BUTTON_ENABLE) in mc13783_pwrbutton_remove()
247 mc13xxx_irq_free(priv->mc13783, MC13783_IRQ_ONOFD1, priv); in mc13783_pwrbutton_remove()
249 mc13xxx_unlock(priv->mc13783); in mc13783_pwrbutton_remove()
251 input_unregister_device(priv->pwr); in mc13783_pwrbutton_remove()
262 .name = "mc13783-pwrbutton",
269 MODULE_ALIAS("platform:mc13783-pwrbutton");
270 MODULE_DESCRIPTION("MC13783 Power Button");