Lines Matching defs:pdata

27 	const struct matrix_keypad_platform_data *pdata;
48 static void __activate_col(const struct matrix_keypad_platform_data *pdata,
51 bool level_on = !pdata->active_low;
54 gpio_direction_output(pdata->col_gpios[col], level_on);
56 gpio_set_value_cansleep(pdata->col_gpios[col], !level_on);
57 if (!pdata->drive_inactive_cols)
58 gpio_direction_input(pdata->col_gpios[col]);
62 static void activate_col(const struct matrix_keypad_platform_data *pdata,
65 __activate_col(pdata, col, on);
67 if (on && pdata->col_scan_delay_us)
68 udelay(pdata->col_scan_delay_us);
71 static void activate_all_cols(const struct matrix_keypad_platform_data *pdata,
76 for (col = 0; col < pdata->num_col_gpios; col++)
77 __activate_col(pdata, col, on);
80 static bool row_asserted(const struct matrix_keypad_platform_data *pdata,
83 return gpio_get_value_cansleep(pdata->row_gpios[row]) ?
84 !pdata->active_low : pdata->active_low;
112 const struct matrix_keypad_platform_data *pdata = keypad->pdata;
117 activate_all_cols(pdata, false);
121 for (row = 0; row < pdata->num_row_gpios; row++)
122 gpio_direction_input(pdata->row_gpios[row]);
125 for (col = 0; col < pdata->num_col_gpios; col++) {
127 activate_col(pdata, col, true);
129 for (row = 0; row < pdata->num_row_gpios; row++)
131 row_asserted(pdata, row) ? (1 << row) : 0;
133 activate_col(pdata, col, false);
136 for (col = 0; col < pdata->num_col_gpios; col++) {
143 for (row = 0; row < pdata->num_row_gpios; row++) {
158 activate_all_cols(pdata, true);
185 msecs_to_jiffies(keypad->pdata->debounce_ms));
275 const struct matrix_keypad_platform_data *pdata = keypad->pdata;
279 for (i = 0; i < pdata->num_col_gpios; i++) {
281 pdata->col_gpios[i], "matrix_kbd_col");
285 pdata->col_gpios[i], i);
289 gpio_direction_output(pdata->col_gpios[i], !pdata->active_low);
292 for (i = 0; i < pdata->num_row_gpios; i++) {
294 pdata->row_gpios[i], "matrix_kbd_row");
298 pdata->row_gpios[i], i);
302 gpio_direction_input(pdata->row_gpios[i]);
305 if (pdata->clustered_irq > 0) {
307 pdata->clustered_irq,
309 pdata->clustered_irq_flags,
317 keypad->row_irqs[0] = pdata->clustered_irq;
320 for (i = 0; i < pdata->num_row_gpios; i++) {
321 irq = gpio_to_irq(pdata->row_gpios[i]);
326 pdata->row_gpios[i], err);
339 pdata->row_gpios[i]);
346 keypad->num_row_irqs = pdata->num_row_gpios;
359 struct matrix_keypad_platform_data *pdata;
369 pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
370 if (!pdata) {
375 pdata->num_row_gpios = nrow = gpiod_count(dev, "row");
376 pdata->num_col_gpios = ncol = gpiod_count(dev, "col");
382 pdata->no_autorepeat = of_property_read_bool(np, "linux,no-autorepeat");
384 pdata->wakeup = of_property_read_bool(np, "wakeup-source") ||
387 pdata->active_low = of_property_read_bool(np, "gpio-activelow");
389 pdata->drive_inactive_cols =
392 of_property_read_u32(np, "debounce-delay-ms", &pdata->debounce_ms);
394 &pdata->col_scan_delay_us);
397 pdata->num_row_gpios + pdata->num_col_gpios,
419 pdata->row_gpios = gpios;
420 pdata->col_gpios = &gpios[pdata->num_row_gpios];
422 return pdata;
436 const struct matrix_keypad_platform_data *pdata;
441 pdata = dev_get_platdata(&pdev->dev);
442 if (!pdata) {
443 pdata = matrix_keypad_parse_dt(&pdev->dev);
444 if (IS_ERR(pdata))
445 return PTR_ERR(pdata);
446 } else if (!pdata->keymap_data) {
460 keypad->pdata = pdata;
461 keypad->row_shift = get_count_order(pdata->num_col_gpios);
471 err = matrix_keypad_build_keymap(pdata->keymap_data, NULL,
472 pdata->num_row_gpios,
473 pdata->num_col_gpios,
480 if (!pdata->no_autorepeat)
493 device_init_wakeup(&pdev->dev, pdata->wakeup);