Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a05f92b7 authored by Archit Taneja's avatar Archit Taneja Committed by Tomi Valkeinen
Browse files

arm: omap: board-sdp3430: use sharp panel's gpio handling



The omap3430sdp board file currently requests gpios required by the sharp_ls dpi
panel, and provides platform_enable/disable callbacks to configure them.

These tasks have been moved to the sharp_ls panel driver itself and shouldn't
be done in the board files.

Remove the gpio requests and the platform callbacks from the board file.
Add the gpio information to panel_sharp_ls037v7dw01_data so that it's
passed to the panel driver.

Out of sharp panel's configurable pins, all apart from resb_gpio are managed by
a CPLD on the display and set to a default value. Only the configurable pin is
passed to platform data.

The backlight GPIO doesn't go directly to the sharp panel, it is used to set up
a voltage supply which goes to the LED+ pin of the panel, hence it isn't passed
to panel as platform data, and configured in the board file itself. The
backlight used to previously toggle through the platform_enable/disable
callbacks, but now it is always on. This needs to be revisited.

Signed-off-by: default avatarArchit Taneja <archit@ti.com>
Cc: Tony Lindgren <tony@atomide.com>
parent fde38254
Loading
Loading
Loading
Loading
+18 −24
Original line number Diff line number Diff line
@@ -108,36 +108,24 @@ static struct twl4030_keypad_data sdp3430_kp_data = {
#define SDP3430_LCD_PANEL_BACKLIGHT_GPIO	8
#define SDP3430_LCD_PANEL_ENABLE_GPIO		5

static struct gpio sdp3430_dss_gpios[] __initdata = {
	{SDP3430_LCD_PANEL_ENABLE_GPIO,    GPIOF_OUT_INIT_LOW, "LCD reset"    },
	{SDP3430_LCD_PANEL_BACKLIGHT_GPIO, GPIOF_OUT_INIT_LOW, "LCD Backlight"},
};

static void __init sdp3430_display_init(void)
{
	int r;

	r = gpio_request_array(sdp3430_dss_gpios,
			       ARRAY_SIZE(sdp3430_dss_gpios));
	/*
	 * the backlight GPIO doesn't directly go to the panel, it enables
	 * an internal circuit on 3430sdp to create the signal V_BKL_28V,
	 * this is connected to LED+ pin of the sharp panel. This GPIO
	 * is left enabled in the board file, and not passed to the panel
	 * as platform_data.
	 */
	r = gpio_request_one(SDP3430_LCD_PANEL_BACKLIGHT_GPIO,
				GPIOF_OUT_INIT_HIGH, "LCD Backlight");
	if (r)
		printk(KERN_ERR "failed to get LCD control GPIOs\n");
		pr_err("failed to get LCD Backlight GPIO\n");

}

static int sdp3430_panel_enable_lcd(struct omap_dss_device *dssdev)
{
	gpio_direction_output(SDP3430_LCD_PANEL_ENABLE_GPIO, 1);
	gpio_direction_output(SDP3430_LCD_PANEL_BACKLIGHT_GPIO, 1);

	return 0;
}

static void sdp3430_panel_disable_lcd(struct omap_dss_device *dssdev)
{
	gpio_direction_output(SDP3430_LCD_PANEL_ENABLE_GPIO, 0);
	gpio_direction_output(SDP3430_LCD_PANEL_BACKLIGHT_GPIO, 0);
}

static int sdp3430_panel_enable_tv(struct omap_dss_device *dssdev)
{
	return 0;
@@ -147,14 +135,20 @@ static void sdp3430_panel_disable_tv(struct omap_dss_device *dssdev)
{
}

static struct panel_sharp_ls037v7dw01_data sdp3430_lcd_data = {
	.resb_gpio = SDP3430_LCD_PANEL_ENABLE_GPIO,
	.ini_gpio = -1,
	.mo_gpio = -1,
	.lr_gpio = -1,
	.ud_gpio = -1,
};

static struct omap_dss_device sdp3430_lcd_device = {
	.name			= "lcd",
	.driver_name		= "sharp_ls_panel",
	.type			= OMAP_DISPLAY_TYPE_DPI,
	.phy.dpi.data_lines	= 16,
	.platform_enable	= sdp3430_panel_enable_lcd,
	.platform_disable	= sdp3430_panel_disable_lcd,
	.data			= &sdp3430_lcd_data,
};

static struct tfp410_platform_data dvi_panel = {