20 #include <linux/module.h>
23 #include <linux/slab.h>
25 #include <linux/input.h>
28 #define DRIVER_NAME "msic_power_btn"
30 #define MSIC_PB_LEVEL (1 << 3)
36 #define MSIC_PWRBTNM (1 << 0)
45 dev_dbg(input->dev.parent,
"PB_INT status= %d\n", pbstat);
48 dev_err(input->dev.parent,
"Read error %d while reading"
49 " MSIC_PB_STATUS\n", ret);
61 struct input_dev *
input;
68 input = input_allocate_device();
70 dev_err(&pdev->
dev,
"Input device allocation error\n");
74 input->name = pdev->
name;
75 input->phys =
"power-button/input0";
77 input->dev.parent = &pdev->
dev;
84 dev_err(&pdev->
dev,
"Unable to request irq %d for mfld power"
89 error = input_register_device(input);
91 dev_err(&pdev->
dev,
"Unable to register input dev, error "
96 platform_set_drvdata(pdev, input);
110 dev_err(&pdev->
dev,
"Unable to clear power button interrupt, "
111 "error: %d\n", error);
120 input_free_device(input);
126 struct input_dev *input = platform_get_drvdata(pdev);
130 input_unregister_device(input);
131 platform_set_drvdata(pdev,
NULL);
141 .probe = mfld_pb_probe,