summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-power.c
diff options
context:
space:
mode:
authorHyungwoo Yang <hyungwooy@nvidia.com>2011-10-24 15:06:17 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:49:33 -0800
commit187ada86d745a7f4fed96cd6017275dbe9b21fbb (patch)
treeb12a924a37dd17cd0dcb6fd705e3b8f02af1887a /arch/arm/mach-tegra/board-cardhu-power.c
parentb04d67acb91dc0f388675f85a28bfa955c25d978 (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.c74
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;
}