|
@@ -786,10 +786,17 @@ static int pxa27x_keypad_probe(struct platform_device *pdev)
|
|
input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
|
|
input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP);
|
|
input_set_capability(input_dev, EV_MSC, MSC_SCAN);
|
|
input_set_capability(input_dev, EV_MSC, MSC_SCAN);
|
|
|
|
|
|
- if (pdata)
|
|
|
|
|
|
+ if (pdata) {
|
|
error = pxa27x_keypad_build_keycode(keypad);
|
|
error = pxa27x_keypad_build_keycode(keypad);
|
|
- else
|
|
|
|
|
|
+ } else {
|
|
error = pxa27x_keypad_build_keycode_from_dt(keypad);
|
|
error = pxa27x_keypad_build_keycode_from_dt(keypad);
|
|
|
|
+ /*
|
|
|
|
+ * Data that we get from DT resides in dynamically
|
|
|
|
+ * allocated memory so we need to update our pdata
|
|
|
|
+ * pointer.
|
|
|
|
+ */
|
|
|
|
+ pdata = keypad->pdata;
|
|
|
|
+ }
|
|
if (error) {
|
|
if (error) {
|
|
dev_err(&pdev->dev, "failed to build keycode\n");
|
|
dev_err(&pdev->dev, "failed to build keycode\n");
|
|
goto failed_put_clk;
|
|
goto failed_put_clk;
|