Lines Matching refs:keypad

16 #define MTK_KPD_NAME		"mt6779-keypad"
50 struct mt6779_keypad *keypad = dev_id;
51 const unsigned short *keycode = keypad->input_dev->keycode;
57 unsigned int row_shift = get_count_order(keypad->n_cols);
60 regmap_bulk_read(keypad->regmap, MTK_KPD_MEM,
63 bitmap_xor(change, new_state, keypad->keymap_state, MTK_KPD_NUM_BITS);
74 keypad->calc_row_col(key, &row, &col);
79 dev_dbg(&keypad->input_dev->dev, "%s",
82 input_event(keypad->input_dev, EV_MSC, MSC_SCAN, scancode);
83 input_report_key(keypad->input_dev, keycode[scancode], pressed);
84 input_sync(keypad->input_dev);
86 dev_dbg(&keypad->input_dev->dev,
90 bitmap_copy(keypad->keymap_state, new_state, MTK_KPD_NUM_BITS);
118 struct mt6779_keypad *keypad;
126 keypad = devm_kzalloc(&pdev->dev, sizeof(*keypad), GFP_KERNEL);
127 if (!keypad)
134 keypad->regmap = devm_regmap_init_mmio(&pdev->dev, base,
136 if (IS_ERR(keypad->regmap)) {
138 "regmap init failed:%pe\n", keypad->regmap);
139 return PTR_ERR(keypad->regmap);
142 bitmap_fill(keypad->keymap_state, MTK_KPD_NUM_BITS);
144 keypad->input_dev = devm_input_allocate_device(&pdev->dev);
145 if (!keypad->input_dev) {
150 keypad->input_dev->name = MTK_KPD_NAME;
151 keypad->input_dev->id.bustype = BUS_HOST;
153 error = matrix_keypad_parse_properties(&pdev->dev, &keypad->n_rows,
154 &keypad->n_cols);
156 dev_err(&pdev->dev, "Failed to parse keypad params\n");
177 keypad->calc_row_col = mt6779_keypad_calc_row_col_single;
180 keypad->calc_row_col = mt6779_keypad_calc_row_col_double;
191 keypad->n_rows, keypad->n_cols, debounce);
194 keypad->n_rows, keypad->n_cols,
195 NULL, keypad->input_dev);
201 input_set_capability(keypad->input_dev, EV_MSC, MSC_SCAN);
203 regmap_write(keypad->regmap, MTK_KPD_DEBOUNCE,
207 regmap_update_bits(keypad->regmap, MTK_KPD_SEL,
211 regmap_update_bits(keypad->regmap, MTK_KPD_SEL, MTK_KPD_SEL_ROW,
212 MTK_KPD_SEL_ROWMASK(keypad->n_rows));
213 regmap_update_bits(keypad->regmap, MTK_KPD_SEL, MTK_KPD_SEL_COL,
214 MTK_KPD_SEL_COLMASK(keypad->n_cols));
216 keypad->clk = devm_clk_get(&pdev->dev, "kpd");
217 if (IS_ERR(keypad->clk))
218 return PTR_ERR(keypad->clk);
220 error = clk_prepare_enable(keypad->clk);
222 dev_err(&pdev->dev, "cannot prepare/enable keypad clock\n");
227 keypad->clk);
237 IRQF_ONESHOT, MTK_KPD_NAME, keypad);
244 error = input_register_device(keypad->input_dev);
259 { .compatible = "mediatek,mt6779-keypad" },
260 { .compatible = "mediatek,mt6873-keypad" },