diff options
author | Hyungwoo Yang <hyungwooy@nvidia.com> | 2011-10-24 15:06:17 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:33 -0800 |
commit | 187ada86d745a7f4fed96cd6017275dbe9b21fbb (patch) | |
tree | b12a924a37dd17cd0dcb6fd705e3b8f02af1887a /arch/arm/mach-tegra/board-cardhu-power.c | |
parent | b04d67acb91dc0f388675f85a28bfa955c25d978 (diff) |
video: tegra: support display board PM313
This change supports PM313 with 19X12 panel.
The change uses PM313 in "Single input to Dual output" mode
Bug ID : 822980
Reviewed-on: http://git-master/r/50215
(cherry picked from commit b83e795747fa860b5b7fb66b2067ebe4f15bcfd0)
Change-Id: Iabf707ded2976e9877481c215d0b1f1940781f14
Reviewed-on: http://git-master/r/60085
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Rebase-Id: Re8eadc35c75fa21b0a5f3cb3bee0e8cb77dc3238
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-power.c')
-rw-r--r-- | arch/arm/mach-tegra/board-cardhu-power.c | 74 |
1 files changed, 63 insertions, 11 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-power.c b/arch/arm/mach-tegra/board-cardhu-power.c index 82b627ef26eb..7ccd6ff45e58 100644 --- a/arch/arm/mach-tegra/board-cardhu-power.c +++ b/arch/arm/mach-tegra/board-cardhu-power.c @@ -761,6 +761,12 @@ GREG_INIT(21, en_vdd_bl2_a03, en_vdd_bl2, NULL, 0, 0, TEGRA_GPIO_PDD0 GREG_INIT(22, en_vbrtr, en_vbrtr, "vdd_3v3_devices", 0, 0, PMU_TCA6416_GPIO_PORT12, false, 0, 0, 0, 0); +/* PM313 display board specific */ +GREG_INIT(4, en_vdd_bl_pm313, en_vdd_bl, NULL, + 0, 0, TEGRA_GPIO_PK3, false, 1, 0, 0, 0); +GREG_INIT(6, en_vdd_pnl1_pm313, en_vdd_pnl1, "vdd_3v3_devices", + 0, 0, TEGRA_GPIO_PH3, false, 1, 0, 0, 0); + #define ADD_GPIO_REG(_name) &gpio_pdata_##_name #define COMMON_GPIO_REG \ @@ -797,10 +803,8 @@ GREG_INIT(22, en_vbrtr, en_vbrtr, "vdd_3v3_devices", 0, 0, PMU_TCA641 ADD_GPIO_REG(en_5v_cp), \ ADD_GPIO_REG(en_5v0), \ ADD_GPIO_REG(en_ddr), \ - ADD_GPIO_REG(en_vdd_bl_pm269), \ ADD_GPIO_REG(en_3v3_sys), \ ADD_GPIO_REG(en_3v3_modem), \ - ADD_GPIO_REG(en_vdd_pnl1_pm269), \ ADD_GPIO_REG(cam1_ldo_en), \ ADD_GPIO_REG(cam2_ldo_en), \ ADD_GPIO_REG(cam3_ldo_en), \ @@ -814,17 +818,36 @@ GREG_INIT(22, en_vbrtr, en_vbrtr, "vdd_3v3_devices", 0, 0, PMU_TCA641 ADD_GPIO_REG(en_usb3_vbus_oc_e118x), \ ADD_GPIO_REG(en_vddio_vid_oc_pm269), -#define E118x_GPIO_REG \ - ADD_GPIO_REG(en_vdd_bl), \ +#define E1247_DISPLAY_GPIO_REG \ + ADD_GPIO_REG(en_vdd_bl_pm269), \ + ADD_GPIO_REG(en_vdd_pnl1_pm269), + +#define PM313_DISPLAY_GPIO_REG \ + ADD_GPIO_REG(en_vdd_bl_pm313), \ + ADD_GPIO_REG(en_vdd_pnl1_pm313), + +#define E118x_GPIO_REG \ + ADD_GPIO_REG(en_5v_cp), \ + ADD_GPIO_REG(en_5v0), \ + ADD_GPIO_REG(en_ddr), \ + ADD_GPIO_REG(en_3v3_sys), \ + ADD_GPIO_REG(en_3v3_modem), \ + ADD_GPIO_REG(cam3_ldo_en), \ + ADD_GPIO_REG(en_vdd_com), \ + ADD_GPIO_REG(en_3v3_fuse), \ + ADD_GPIO_REG(en_3v3_emmc), \ + ADD_GPIO_REG(en_vdd_sdmmc1), \ + ADD_GPIO_REG(en_3v3_pex_hvdd), \ + ADD_GPIO_REG(en_1v8_cam), \ ADD_GPIO_REG(dis_5v_switch_e118x), \ ADD_GPIO_REG(en_usb1_vbus_oc_e118x), \ ADD_GPIO_REG(en_usb3_vbus_oc_e118x), \ - ADD_GPIO_REG(en_vddio_vid_oc_e118x), \ + ADD_GPIO_REG(en_vddio_vid_oc_e118x), \ ADD_GPIO_REG(en_vbrtr), -#define E1198_GPIO_REG \ - ADD_GPIO_REG(en_vddio_vid_oc), \ - ADD_GPIO_REG(cam1_ldo_en), \ +#define E1198_GPIO_REG \ + ADD_GPIO_REG(en_vddio_vid_oc), \ + ADD_GPIO_REG(cam1_ldo_en), \ ADD_GPIO_REG(cam2_ldo_en), #define E1291_1198_A00_GPIO_REG \ @@ -840,8 +863,14 @@ GREG_INIT(22, en_vbrtr, en_vbrtr, "vdd_3v3_devices", 0, 0, PMU_TCA641 /* Gpio switch regulator platform data for E1186/E1187/E1256*/ static struct gpio_switch_regulator_subdev_data *gswitch_subdevs_e118x[] = { - COMMON_GPIO_REG E118x_GPIO_REG + E1247_DISPLAY_GPIO_REG +}; + +/* Gpio switch regulator platform data for E1186/E1187/E1256*/ +static struct gpio_switch_regulator_subdev_data *gswitch_subdevs_e118x_pm313[] = { + E118x_GPIO_REG + PM313_DISPLAY_GPIO_REG }; /* Gpio switch regulator platform data for E1198 and E1291*/ @@ -877,6 +906,13 @@ static struct gpio_switch_regulator_subdev_data *gswitch_subdevs_e1198_a02[] = { /* Gpio switch regulator platform data for PM269*/ static struct gpio_switch_regulator_subdev_data *gswitch_subdevs_pm269[] = { PM269_GPIO_REG + E1247_DISPLAY_GPIO_REG +}; + +/* Gpio switch regulator platform data for PM269*/ +static struct gpio_switch_regulator_subdev_data *gswitch_subdevs_pm269_pm313[] = { + PM269_GPIO_REG + PM313_DISPLAY_GPIO_REG }; /* Gpio switch regulator platform data for E1291 A03*/ @@ -907,7 +943,11 @@ int __init cardhu_gpio_switch_regulator_init(void) { int i; struct board_info board_info; + struct board_info display_board_info; + tegra_get_board_info(&board_info); + tegra_get_display_board_info(&display_board_info); + switch (board_info.board_id) { case BOARD_E1198: if (board_info.fab <= BOARD_FAB_A01) { @@ -942,10 +982,22 @@ int __init cardhu_gpio_switch_regulator_init(void) case BOARD_E1257: gswitch_pdata.num_subdevs = ARRAY_SIZE(gswitch_subdevs_pm269); gswitch_pdata.subdevs = gswitch_subdevs_pm269; + if (display_board_info.board_id == BOARD_DISPLAY_PM313) { + gswitch_pdata.num_subdevs = ARRAY_SIZE(gswitch_subdevs_pm269_pm313); + gswitch_pdata.subdevs = gswitch_subdevs_pm269_pm313; + } else { + gswitch_pdata.num_subdevs = ARRAY_SIZE(gswitch_subdevs_pm269); + gswitch_pdata.subdevs = gswitch_subdevs_pm269; + } break; default: - gswitch_pdata.num_subdevs = ARRAY_SIZE(gswitch_subdevs_e118x); - gswitch_pdata.subdevs = gswitch_subdevs_e118x; + if (display_board_info.board_id == BOARD_DISPLAY_PM313) { + gswitch_pdata.num_subdevs = ARRAY_SIZE(gswitch_subdevs_e118x_pm313); + gswitch_pdata.subdevs = gswitch_subdevs_e118x_pm313; + } else { + gswitch_pdata.num_subdevs = ARRAY_SIZE(gswitch_subdevs_e118x); + gswitch_pdata.subdevs = gswitch_subdevs_e118x; + } break; } |