mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
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: Archit Taneja <archit@ti.com> Cc: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
fde382541d
commit
a05f92b702
@ -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 = {
|
||||
|
Loading…
Reference in New Issue
Block a user