diff options
Diffstat (limited to 'arch/arm/mach-omap2/board-omap4panda.c')
| -rw-r--r-- | arch/arm/mach-omap2/board-omap4panda.c | 24 | 
1 files changed, 18 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 30ad40db2cf..28fc271f703 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c @@ -51,8 +51,9 @@  #define GPIO_HUB_NRESET		62  #define GPIO_WIFI_PMENA		43  #define GPIO_WIFI_IRQ		53 -#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */ +#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */  #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ +#define HDMI_GPIO_HPD  63 /* Hotplug detect */  /* wl127x BT, FM, GPS connectivity chip */  static int wl1271_gpios[] = {46, -1, -1}; @@ -413,8 +414,9 @@ int __init omap4_panda_dvi_init(void)  }  static struct gpio panda_hdmi_gpios[] = { -	{ HDMI_GPIO_HPD,	GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd"   }, +	{ HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },  	{ HDMI_GPIO_LS_OE,	GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" }, +	{ HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },  };  static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev) @@ -431,10 +433,13 @@ static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)  static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)  { -	gpio_free(HDMI_GPIO_LS_OE); -	gpio_free(HDMI_GPIO_HPD); +	gpio_free_array(panda_hdmi_gpios, ARRAY_SIZE(panda_hdmi_gpios));  } +static struct omap_dss_hdmi_data omap4_panda_hdmi_data = { +	.hpd_gpio = HDMI_GPIO_HPD, +}; +  static struct omap_dss_device  omap4_panda_hdmi_device = {  	.name = "hdmi",  	.driver_name = "hdmi_panel", @@ -442,6 +447,7 @@ static struct omap_dss_device  omap4_panda_hdmi_device = {  	.platform_enable = omap4_panda_panel_enable_hdmi,  	.platform_disable = omap4_panda_panel_disable_hdmi,  	.channel = OMAP_DSS_CHANNEL_DIGIT, +	.data = &omap4_panda_hdmi_data,  };  static struct omap_dss_device *omap4_panda_dss_devices[] = { @@ -473,18 +479,24 @@ void omap4_panda_display_init(void)  		omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);  	else  		omap_hdmi_init(0); + +	omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT); +	omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT); +	omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);  }  static void __init omap4_panda_init(void)  {  	int package = OMAP_PACKAGE_CBS; +	int ret;  	if (omap_rev() == OMAP4430_REV_ES1_0)  		package = OMAP_PACKAGE_CBL;  	omap4_mux_init(board_mux, NULL, package); -	if (wl12xx_set_platform_data(&omap_panda_wlan_data)) -		pr_err("error setting wl12xx data\n"); +	ret = wl12xx_set_platform_data(&omap_panda_wlan_data); +	if (ret) +		pr_err("error setting wl12xx data: %d\n", ret);  	omap4_panda_i2c_init();  	platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));  |