static int __init mapphone_init_keypad(void)
{
	int status;
	int is_slider_found = 0;

#ifdef CONFIG_ARM_OF
	int slider_gpio, i;
	int array_size = 0;

	/*
	 * For those h/w don't have slider, there will be no slider_data
	 * in devtree. All other h/w should provide slider_data.
	 * There is no default gpio for it
	 */
	slider_gpio = get_gpio_by_name("slider_data");

	if (slider_gpio > 0)
		for (i = 0; i < ARRAY_SIZE(mapphone_switch_map); i++)
			if (SW_LID == mapphone_switch_map[i].code) {
				mapphone_switch_map[i].gpio = slider_gpio;
				is_slider_found = 1;
				break;
			}
	if (is_slider_found) {
		mapphone_switch_info[0] = &mapphone_keypad_matrix_info.info;
		mapphone_switch_info[1] = &mapphone_switch_input_info.info;
		array_size = 2;

		mapphone_switch_data.info = mapphone_switch_info;
		mapphone_switch_data.info_count = array_size;
	}

	if (mapphone_dt_kp_init() != 0)
		printk(KERN_INFO "Keypad: using non-dt configuration\n");

#ifdef CONFIG_INPUT_KEYRESET
	if (mapphone_dt_kpreset_init())
		printk(KERN_INFO "Keypadreset init failed\n");
#endif
#endif

	platform_device_register(&mapphone_reset_keys_device);
	if (is_slider_found)
		platform_device_register(&mapphone_switch_device);

	status = omap4_keypad_initialization(&omap_kp_data);
	if (status)
		pr_err("Keypad initialization failed: %d\n", status);

	return status;
}
示例#2
0
static int __init mapphone_init_keypad(void)
{
#ifdef CONFIG_ARM_OF
	if (mapphone_dt_kp_init())
		printk(KERN_INFO "Keypad: using non-dt configuration\n");
#endif

#ifdef CONFIG_INPUT_KEYRESET
	if (mapphone_dt_kpreset_init())
		printk(KERN_INFO "Keypadreset init failed\n");
#endif

	/* keypad rows */
	omap_cfg_reg(N4_34XX_GPIO34);
	omap_cfg_reg(M4_34XX_GPIO35);
	omap_cfg_reg(L4_34XX_GPIO36);
	omap_cfg_reg(K4_34XX_GPIO37);
	omap_cfg_reg(T3_34XX_GPIO38);
	omap_cfg_reg(R3_34XX_GPIO39);
	omap_cfg_reg(N3_34XX_GPIO40);
	omap_cfg_reg(M3_34XX_GPIO41);

	/* keypad columns */
	omap_cfg_reg(K3_34XX_GPIO43_OUT);
	omap_cfg_reg(V8_34XX_GPIO53_OUT);
	omap_cfg_reg(U8_34XX_GPIO54_OUT);
	omap_cfg_reg(T8_34XX_GPIO55_OUT);
	omap_cfg_reg(R8_34XX_GPIO56_OUT);
	omap_cfg_reg(P8_34XX_GPIO57_OUT);
	omap_cfg_reg(N8_34XX_GPIO58_OUT);
	omap_cfg_reg(L8_34XX_GPIO63_OUT);

	/* switches */
	omap_cfg_reg(AB2_34XX_GPIO177);
	/*omap_cfg_reg(AH17_34XX_GPIO100);*/

#ifdef CONFIG_KEYBOARD_ADP5588
	adp5588_reset();
	platform_device_register(&mapphone_adp5588_leds_dev);
#endif

	platform_device_register(&mapphone_reset_keys_device);
	return platform_device_register(&mapphone_keypad_device);
}