.enable_rail = _enable,					\
		.disable_rail = _disable,				\
	}

GREG_INIT(0, pmu_5v15_en,     NULL,      ENT_TPS80031_GPIO_REGEN1, false, 0, 0, 0, 0);
GREG_INIT(1, pmu_3v3_en,      "vdd_5v15", ENT_TPS80031_GPIO_REGEN2, false, 0, 0, 0, 0);
GREG_INIT(2, pmu_hdmi_5v0_en, "vdd_5v15", ENT_TPS80031_GPIO_SYSEN, false, 0, 0, 0, 0);

GREG_INIT(3, vdd_fuse_en, "avdd_usb_hdmi_3v3", TEGRA_GPIO_PM0, false, 0, 0, 0, 0);
GREG_INIT(4, sdmmc3_vdd_sel, "vddio_sdmmc_2v85", TEGRA_GPIO_PM1, false, 0, 0, 0, 0);
GREG_INIT(5, cam_ldo_2v8_en, NULL, TEGRA_GPIO_PM7, false, 0, 0, 0, 0);
GREG_INIT(6, cam_ldo_1v8_en, NULL, TEGRA_GPIO_PF1, false, 0, 0, 0, 0);

#define ADD_GPIO_REG(_name)	(&gpio_pdata_##_name)
static struct gpio_switch_regulator_subdev_data *gswitch_subdevs[] = {
	ADD_GPIO_REG(pmu_5v15_en),
	ADD_GPIO_REG(pmu_3v3_en),
	ADD_GPIO_REG(pmu_hdmi_5v0_en),
	ADD_GPIO_REG(vdd_fuse_en),
	ADD_GPIO_REG(sdmmc3_vdd_sel),
	ADD_GPIO_REG(cam_ldo_2v8_en),
	ADD_GPIO_REG(cam_ldo_1v8_en),
};

static struct gpio_switch_regulator_platform_data  gswitch_pdata = {
	.num_subdevs = ARRAY_SIZE(gswitch_subdevs),
	.subdevs = gswitch_subdevs,
};

static struct platform_device gswitch_regulator_pdata = {
	.name	= "gpio-switch-regulator",
	ADD_FIXED_REG(cam_ldo_1v8_en)

static struct platform_device *fixed_regs_devices_a02[] = {
	FIXED_REGS_COMMON,
	ADD_FIXED_REG(pmu_3v3_en),
};

static struct platform_device *fixed_regs_devices_a03[] = {
	FIXED_REGS_COMMON,
	ADD_FIXED_REG(vdd_sdmmc3_2v85_en),
	ADD_FIXED_REG(lcd_1v8_en),
};

#define ADD_GPIO_REG(_name) (&gpio_reg_##_name##_dev)
static struct platform_device *gpio_regs_devices[] = {
	ADD_GPIO_REG(sdmmc3_vdd_sel),
};

static int __init enterprise_fixed_regulator_init(void)
{
	int i;
	struct board_info board_info;
	struct platform_device **fixed_regs_devices;
	int nfixreg_devs;

	tegra_get_board_info(&board_info);

	if (board_info.fab < BOARD_FAB_A03) {
		fixed_regs_devices = fixed_regs_devices_a02;
		nfixreg_devs = ARRAY_SIZE(fixed_regs_devices_a02);
	} else {
GREG_INIT(4, aud_3v3_en,       NULL, TEGRA_GPIO_PB2, false, 0, 0, 0, 0);
GREG_INIT(5, cam_vcm_2v85_en, NULL, TEGRA_GPIO_PM7, false, 0, 0, 0, 0);
GREG_INIT(6, lcm_3v3_en,     NULL, TEGRA_GPIO_PE2, false, 1, 0, 0, 0);
GREG_INIT(7, lcmio_1v8_en,     "vio_1v8", TEGRA_GPIO_PE5, false, 1, 0, 0, 0);
GREG_INIT(8, srio_1v8_en,      "vio_1v8", TEGRA_GPIO_PY3, false, 1, 0, 0, 0);
GREG_INIT(9, cam2_d1v2_en,      "vio_1v8", TEGRA_GPIO_PF6, false, 0, 0, 0, 0);
GREG_INIT(10, cam_d1v2_en,      "vio_1v8", TEGRA_GPIO_PF5, false, 0, 0, 0, 0);
GREG_INIT(11, camio_1v8_en,      NULL, TEGRA_GPIO_PBB4, false, 0, 0, 0, 0);
GREG_INIT(12, cam_a2v85_en,      NULL, TEGRA_GPIO_PE3, false, 0, 0, 0, 0);
GREG_INIT(13, mhl_1v2_en,     NULL, TEGRA_GPIO_PE4, false, 0, 0, 0, 0);
GREG_INIT(14, sdmmc_2v85_en,     NULL, TEGRA_GPIO_PM3, false, 1, 0, 0, 0);


#define ADD_GPIO_REG(_name)	(&gpio_pdata_##_name)
static struct gpio_switch_regulator_subdev_data *gswitch_subdevs[] = {
	ADD_GPIO_REG(led_3v3_en),
	ADD_GPIO_REG(vib_3v_en),
	ADD_GPIO_REG(srio_1v8_en),
	ADD_GPIO_REG(aud_a1v8_en),
	ADD_GPIO_REG(aud_3v3_en),
	ADD_GPIO_REG(lcmio_1v8_en),
	ADD_GPIO_REG(lcm_3v3_en),
	ADD_GPIO_REG(mhl_3v3_en),
	ADD_GPIO_REG(mhl_1v2_en),
	ADD_GPIO_REG(cam_vcm_2v85_en),
	ADD_GPIO_REG(cam2_d1v2_en),
	ADD_GPIO_REG(cam_d1v2_en),
	ADD_GPIO_REG(camio_1v8_en),
	ADD_GPIO_REG(cam_a2v85_en),
};
	ADD_FIXED_REG(en_ddr_a04),
	ADD_FIXED_REG(en_3v3_sys_a04),
	ADD_FIXED_REG(en_3v3_modem),
	ADD_FIXED_REG(en_vdd_pnl1),
	ADD_FIXED_REG(cam3_ldo_en),
	ADD_FIXED_REG(en_vdd_com),
	ADD_FIXED_REG(en_3v3_fuse),
	ADD_FIXED_REG(en_3v3_emmc),
	ADD_FIXED_REG(en_vdd_sdmmc1),
	ADD_FIXED_REG(en_3v3_pex_hvdd),
	ADD_FIXED_REG(en_1v8_cam),
	ADD_FIXED_REG(en_vdd_bl1_a03),
	ADD_FIXED_REG(en_vdd_bl2_a03),
	ADD_FIXED_REG(cam1_ldo_en),
	ADD_FIXED_REG(cam2_ldo_en),
	ADD_GPIO_REG(en_usb1_vbus_oc_a03),
	ADD_GPIO_REG(en_usb3_vbus_oc_a03),
	ADD_GPIO_REG(en_vddio_vid_oc),
};

/* Fixed regulator devices for PM269 */
static struct platform_device *fixed_reg_devs_pm269[] = {
	PM269_FIXED_REG
	E1247_DISPLAY_FIXED_REG
};

/* Fixed regulator devices for PM269 */
static struct platform_device *fixed_reg_devs_pm269_pm313[] = {
	PM269_FIXED_REG
	PM313_DISPLAY_FIXED_REG
};
        REGULATOR_SUPPLY("vlg_1v8_ldo", NULL),
};
static int gpio_switch_ldo_sensor_1v8_en_voltages[] = {1800};

static struct regulator_consumer_supply gpio_switch_ldo_vdd_fuse_3v3_en_supply[] = {
        REGULATOR_SUPPLY("vdd_fuse", NULL),
};
static int gpio_switch_ldo_vdd_fuse_3v3_en_voltages[] = {3300};

GREG_INIT(0, ldo_mhl_en, NULL, MHL_LDO_EN, false, 0, 0, 0, 0);
GREG_INIT(1, ldo_sensor_3v0_en, NULL, SENSOR_LDO_EN, false, 0, 0, 0, 0);
GREG_INIT(2, ldo_sensor_1v8_en, NULL, SENSOR_LDO_EN2, false, 0, 0, 0, 0);
GREG_INIT(3, ldo_vdd_fuse_3v3_en, NULL, VFUSE_LDO_EN, false, 0, 0, 0, 0);

static struct gpio_switch_regulator_subdev_data *gswitch_subdevs[] = {
        ADD_GPIO_REG(ldo_mhl_en),
        ADD_GPIO_REG(ldo_sensor_3v0_en),
        ADD_GPIO_REG(ldo_sensor_1v8_en),
        ADD_GPIO_REG(ldo_vdd_fuse_3v3_en),
};

static struct gpio_switch_regulator_platform_data  gswitch_pdata = {
	.num_subdevs	= ARRAY_SIZE(gswitch_subdevs),
	.subdevs	= gswitch_subdevs,
};

static struct platform_device gswitch_regulator_pdata = {
	.name	= "gpio-switch-regulator",
	.id	= -1,
	.dev	= {
		.platform_data = &gswitch_pdata,
/* 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*/
static struct gpio_switch_regulator_subdev_data *gswitch_subdevs_e1198_base[] = {
	COMMON_GPIO_REG
	E1291_1198_A00_GPIO_REG
	E1198_GPIO_REG
};

static struct gpio_switch_regulator_subdev_data *gswitch_subdevs_e1198_a02[] = {
	ADD_GPIO_REG(en_5v_cp),
	ADD_GPIO_REG(en_5v0),
	ADD_GPIO_REG(en_ddr_a04),
	ADD_GPIO_REG(en_3v3_sys_a04),
	ADD_GPIO_REG(en_3v3_modem),
	ADD_GPIO_REG(en_vdd_pnl1),
	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(en_usb1_vbus_oc_a03),
	ADD_GPIO_REG(en_usb3_vbus_oc_a03),
	ADD_GPIO_REG(en_vdd_bl1_a03),