#define CPU_DVFS(_clk_name, _speedo_id, _process_id, _mult, _freqs...)	\
	{								\
		.clk_name	= _clk_name,				\
		.speedo_id	= _speedo_id,				\
		.process_id	= _process_id,				\
		.freqs		= {_freqs},				\
		.freqs_mult	= _mult,				\
		.millivolts	= cpu_millivolts,			\
		.auto_dvfs	= true,					\
		.dvfs_rail	= &tegra3_dvfs_rail_vdd_cpu,		\
	}

static struct dvfs cpu_dvfs_table[] = {
	/* Cpu voltages (mV):	      750, 775, 825, 850, 875,  900,  916,  950,  975, 1000, 1007, 1025, 1050, 1075, 1100, 1125, 1150, 1175, 1200, 1212, 1237 */
	CPU_DVFS("cpu_g",  0, 0, MHZ,   1,   1, 684, 684,  817,  817,  817, 1026, 1102, 1102, 1149, 1187, 1225, 1282, 1300),
	CPU_DVFS("cpu_g",  0, 1, MHZ,   1,   1, 807, 807,  948,  948,  948, 1117, 1171, 1171, 1206, 1300),
	CPU_DVFS("cpu_g",  0, 2, MHZ,   1,   1, 883, 883, 1039, 1039, 1039, 1178, 1206, 1206, 1300),
	CPU_DVFS("cpu_g",  0, 3, MHZ,   1,   1, 931, 931, 1102, 1102, 1102, 1216, 1300, 1300),

	CPU_DVFS("cpu_g",  1, 0, MHZ, 460, 460, 550, 550,  680,  680,  680,  820,  970,  970, 1040, 1080, 1150, 1200, 1280, 1300),
	CPU_DVFS("cpu_g",  1, 1, MHZ, 480, 480, 650, 650,  780,  780,  780,  990, 1040, 1040, 1100, 1200, 1300),
	CPU_DVFS("cpu_g",  1, 2, MHZ, 520, 520, 700, 700,  860,  860,  860, 1050, 1150, 1150, 1200, 1300),
	CPU_DVFS("cpu_g",  1, 3, MHZ, 550, 550, 770, 770,  910,  910,  910, 1150, 1230, 1230, 1300),

	CPU_DVFS("cpu_g",  2, 1, MHZ, 480, 480, 650, 650,  780,  780,  780,  990, 1040, 1040, 1100, 1200, 1250, 1300, 1330, 1400),
	CPU_DVFS("cpu_g",  2, 2, MHZ, 520, 520, 700, 700,  860,  860,  860, 1050, 1150, 1150, 1200, 1280, 1300, 1350, 1400),
	CPU_DVFS("cpu_g",  2, 3, MHZ, 550, 550, 770, 770,  910,  910,  910, 1150, 1230, 1230, 1280, 1300, 1350, 1400),

	CPU_DVFS("cpu_g",  3, 1, MHZ, 480, 480, 650, 650,  780,  780,  780,  990, 1040, 1040, 1100, 1200, 1250, 1300, 1330, 1400),
	CPU_DVFS("cpu_g",  3, 2, MHZ, 520, 520, 700, 700,  860,  860,  860, 1050, 1150, 1150, 1200, 1280, 1300, 1350, 1400),
#define CORE_DVFS(_clk_name, _process_id, _auto, _mult, _freqs...)	\
	{							\
		.clk_name	= _clk_name,			\
		.speedo_id	= -1,				\
		.process_id	= _process_id,				\
		.freqs		= {_freqs},			\
		.freqs_mult	= _mult,			\
		.millivolts	= core_millivolts,		\
		.auto_dvfs	= _auto,			\
		.dvfs_rail	= &tegra2_dvfs_rail_vdd_core,	\
	}

static struct dvfs dvfs_init[] = {
	/* Cpu voltages (mV):	   750, 775, 800, 825, 850, 875,  900,  925,  950,  975,  1000, 1025, 1050, 1100, 1125 */
	CPU_DVFS("cpu", 0, 0, MHZ, 314, 314, 314, 456, 456, 456,  608,  608,  608,  760,  817,  817,  912,  1000),
	CPU_DVFS("cpu", 0, 1, MHZ, 314, 314, 314, 456, 456, 456,  618,  618,  618,  770,  827,  827,  922,  1000),
	CPU_DVFS("cpu", 0, 2, MHZ, 494, 494, 494, 675, 675, 817,  817,  922,  922,  1000),
	CPU_DVFS("cpu", 0, 3, MHZ, 730, 760, 845, 845, 940, 1000),

	CPU_DVFS("cpu", 1, 0, MHZ, 380, 380, 503, 503, 655, 655,  798,  798,  902,  902,  960,  1000, 1200, 1408, 1504, 1600),
	CPU_DVFS("cpu", 1, 1, MHZ, 389, 389, 503, 503, 655, 760,  798,  798,  950,  950,  1000, 1200, 1408, 1504, 1600),
	CPU_DVFS("cpu", 1, 2, MHZ, 598, 598, 750, 750, 893, 893,  1000, 1200, 1408, 1504, 1600),
	CPU_DVFS("cpu", 1, 3, MHZ, 730, 760, 845, 845, 940, 1000, 1200, 1408, 1504, 1600),

	CPU_DVFS("cpu", 2, 0, MHZ,   0,   0,   0,   0, 655, 655,  798,  798,  902,  902,  960,  1000, 1100, 1100, 1200),
	CPU_DVFS("cpu", 2, 1, MHZ,   0,   0,   0,   0, 655, 760,  798,  798,  950,  950,  1015, 1015, 1100, 1200),
	CPU_DVFS("cpu", 2, 2, MHZ,   0,   0,   0,   0, 769, 769,  902,  902,  1026, 1026, 1140, 1140, 1200),
	CPU_DVFS("cpu", 2, 3, MHZ,   0,   0,   0,   0, 940, 1000, 1000, 1000, 1130, 1130, 1200),

	/* Core voltages (mV):           950,    1000,   1100,   1200,   1225,   1275,   1300 */
#define CPU_DVFS(_clk_name, _speedo_id, _process_id, _mult, _freqs...)	\
	{								\
		.clk_name	= _clk_name,				\
		.speedo_id	= _speedo_id,				\
		.process_id	= _process_id,				\
		.freqs		= {_freqs},				\
		.freqs_mult	= _mult,				\
		.millivolts	= cpu_millivolts,			\
		.auto_dvfs	= true,					\
		.dvfs_rail	= &tegra3_dvfs_rail_vdd_cpu,		\
	}

static struct dvfs cpu_dvfs_table[] = {
	/* Cpu voltages (mV):	     800, 825, 850, 875,  900,  912,  925,  950,  975, 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1200, 1237 */
	CPU_DVFS("cpu_g",  0, 0, MHZ,   1,   1, 684, 684,  817,  817,  817,  817, 1026, 1102, 1149, 1187, 1225, 1282, 1300),
	CPU_DVFS("cpu_g",  0, 1, MHZ,   1,   1, 807, 807,  948,  948,  948,  948, 1117, 1171, 1206, 1300),
	CPU_DVFS("cpu_g",  0, 2, MHZ,   1,   1, 883, 883, 1039, 1039, 1039, 1039, 1178, 1206, 1300),
	CPU_DVFS("cpu_g",  0, 3, MHZ,   1,   1, 931, 931, 1102, 1102, 1102, 1102, 1216, 1300),

	CPU_DVFS("cpu_g",  1, 0, MHZ,   1,   1, 550, 550,  680,  680,  680,  680,  820,  970, 1040, 1080, 1150, 1200, 1280, 1300),
	CPU_DVFS("cpu_g",  1, 1, MHZ,   1,   1, 650, 650,  820,  820,  820,  820, 1000, 1060, 1100, 1200, 1300),
	CPU_DVFS("cpu_g",  1, 2, MHZ,   1,   1, 720, 720,  880,  880,  880,  880, 1090, 1180, 1200, 1300),
	CPU_DVFS("cpu_g",  1, 3, MHZ,   1,   1, 800, 800, 1000, 1000, 1000, 1000, 1180, 1230, 1300),

	CPU_DVFS("cpu_g", 2, 1, MHZ,   1,   1, 650, 650,  820,  820,  820, 1000, 1060, 1100, 1200, 1250, 1300, 1330, 1400,1550,1600, 1700),
	CPU_DVFS("cpu_g", 2, 2, MHZ,   1,   1, 720, 720,  880,  880,  880, 1090, 1180, 1200, 1300, 1310, 1350, 1400,1400,1550,1600, 1700),
	CPU_DVFS("cpu_g", 2, 3, MHZ,   1,   1, 800, 800, 1000, 1000, 1000, 1180, 1230, 1300, 1320, 1350, 1400,1400,1400,1550,1600, 1700),

	CPU_DVFS("cpu_g", 3, 1, MHZ,   1,   1, 1, 1, 820,  820,  820,  820, 1000, 1060, 1100, 1200, 1250, 1300, 1330, 1400, 1550, 1600, 1700),
	CPU_DVFS("cpu_g", 3, 2, MHZ,   1,   1, 1, 1, 880,  880,  880,  880, 1090, 1180, 1200, 1300, 1310, 1350, 1400,1400,1550, 1600, 1700),
#define CPU_DVFS(_clk_name, _speedo_id, _process_id, _mult, _freqs...)	\
	{								\
		.clk_name	= _clk_name,				\
		.speedo_id	= _speedo_id,				\
		.process_id	= _process_id,				\
		.freqs		= {_freqs},				\
		.freqs_mult	= _mult,				\
		.millivolts	= cpu_millivolts,			\
		.auto_dvfs	= true,					\
		.dvfs_rail	= &tegra3_dvfs_rail_vdd_cpu,		\
	}

static struct dvfs cpu_dvfs_table[] = {
	/* Cpu voltages (mV):	     750, 775, 800, 825, 850, 875,  900,  925,  950,  975, 1000, 1025, 1050, 1075, 1100, 1125, 1150*/
	CPU_DVFS("cpu_g", 0, 0, MHZ,   1,   1,   1,   1, 684, 684,  817,  817,  817, 1026, 1102, 1149, 1187, 1225, 1282, 1300),
	CPU_DVFS("cpu_g", 0, 1, MHZ,   1,   1,   1,   1, 807, 807,  948,  948,  948, 1117, 1171, 1206, 1300),
	CPU_DVFS("cpu_g", 0, 2, MHZ,   1,   1,   1,   1, 883, 883, 1039, 1039, 1039, 1178, 1206, 1300),
	CPU_DVFS("cpu_g", 0, 3, MHZ,   1,   1,   1,   1, 931, 931, 1102, 1102, 1102, 1216, 1300),

	CPU_DVFS("cpu_g", 1, 0, MHZ,   1,   1,   1,   1, 550, 550,  680,  680,  680,  820,  970, 1040, 1080, 1150, 1200, 1280, 1300),
	CPU_DVFS("cpu_g", 1, 1, MHZ,   1,   1,   1,   1, 650, 650,  820,  820,  820, 1000, 1060, 1100, 1200, 1300),
	CPU_DVFS("cpu_g", 1, 2, MHZ,   1,   1,   1,   1, 720, 720,  880,  880,  880, 1090, 1180, 1200, 1300),
	CPU_DVFS("cpu_g", 1, 3, MHZ,   1,   1,   1,   1, 800, 800, 1000, 1000, 1000, 1180, 1230, 1300),

	CPU_DVFS("cpu_g", 2, 1, MHZ,   1,   1,   1,   1, 650, 650,  820,  820,  820, 1000, 1060, 1100, 1200, 1250, 1300, 1330, 1400),
	CPU_DVFS("cpu_g", 2, 2, MHZ,   1,   1,   1,   1, 720, 720,  880,  880,  880, 1090, 1180, 1200, 1300, 1310, 1350, 1400),
	CPU_DVFS("cpu_g", 2, 3, MHZ,   1,   1,   1,   1, 800, 800, 1000, 1000, 1000, 1180, 1230, 1300, 1320, 1350, 1400),

	CPU_DVFS("cpu_g", 3, 1, MHZ,   1,   1,   1,   1, 650, 650,  820,  820,  820, 1000, 1060, 1100, 1200, 1250, 1300, 1330, 1400),
	CPU_DVFS("cpu_g", 3, 2, MHZ,   1,   1,   1,   1, 720, 720,  880,  880,  880, 1090, 1180, 1200, 1300, 1310, 1350, 1400),
#define CPU_DVFS(_clk_name, _speedo_id, _process_id, _mult, _freqs...)	\
	{								\
		.clk_name	= _clk_name,				\
		.speedo_id	= _speedo_id,				\
		.process_id	= _process_id,				\
		.freqs		= {_freqs},				\
		.freqs_mult	= _mult,				\
		.millivolts	= cpu_millivolts,			\
		.auto_dvfs	= true,					\
		.dvfs_rail	= &tegra3_dvfs_rail_vdd_cpu,		\
	}

static struct dvfs cpu_dvfs_table[] = {
	/* Cpu voltages (mV):	      762, 780, 805, 825, 875, 925, 950,  1000, 1050, 1100, 1150, 1175, 1237, 1270, 1300, 1330, HUNDSBUAH_MAX_CPU_VOLTAGE  }; */
	CPU_DVFS("cpu_g", 12, 3, MHZ, 475, 513, 579, 620, 760, 910, 1000, 1150, 1300, 1400, 1500, 1600, 1700, 1750, 1800, 1850, HUNDSBUAH_MAX_CPU_FREQUENCY),
	CPU_DVFS("cpu_g", 12, 4, MHZ, 475, 513, 579, 620, 760, 910, 1000, 1150, 1300, 1400, 1500, 1600, 1700, 1750, 1800, 1850, HUNDSBUAH_MAX_CPU_FREQUENCY),

	/*
	 * "Safe entry" to be used when no match for chip speedo, process
	 *  corner is found (just to boot at low rate); must be the last one
	 */
	CPU_DVFS("cpu_g", -1, -1, MHZ, 1,   1, 216, 216, 300),
};

static struct dvfs cpu_0_dvfs_table[] = {
	/* Cpu voltages (mV):	      762, 780, 805, 825, 875, 925, 950,  1000, 1050, 1100, 1150, 1175, 1237, 1270, 1300, 1330, HUNDSBUAH_MAX_CPU_VOLTAGE  }; */
	CPU_DVFS("cpu_0", 12, 3, MHZ, 475, 513, 579, 620, 760, 910, 1000, 1150, 1300, 1400, 1500, 1600, 1700, 1750, 1800, 1850, HUNDSBUAH_MAX_CPU_FREQUENCY),
	CPU_DVFS("cpu_0", 12, 4, MHZ, 475, 513, 579, 620, 760, 910, 1000, 1150, 1300, 1400, 1500, 1600, 1700, 1750, 1800, 1850, HUNDSBUAH_MAX_CPU_FREQUENCY),
};
	}

#define CORE_DVFS(_clk_name, _auto, _mult, _freqs...)		\
	{							\
		.clk_name	= _clk_name,			\
		.cpu_process_id = -1,				\
		.freqs		= {_freqs},			\
		.freqs_mult	= _mult,			\
		.millivolts	= core_millivolts,		\
		.auto_dvfs	= _auto,			\
		.dvfs_rail	= &tegra2_dvfs_rail_vdd_core,	\
	}

static struct dvfs dvfs_init[] = {
	/* Cpu voltages (mV):   750, 775, 800, 825, 875, 900, 925, 975, 1000, 1050, 1100 */
	CPU_DVFS("cpu", 0, MHZ, 314, 314, 314, 456, 456, 608, 608, 760, 817,  912,  1000),
	CPU_DVFS("cpu", 1, MHZ, 314, 314, 314, 456, 456, 618, 618, 770, 827,  922,  1000),
	CPU_DVFS("cpu", 2, MHZ, 494, 675, 675, 675, 817, 817, 922, 1000),
	CPU_DVFS("cpu", 3, MHZ, 730, 760, 845, 845, 1000),

	/* Core voltages (mV):       950,    1000,   1100,   1200,   1275 */
	CORE_DVFS("emc",     1, KHZ, 57000,  333000, 333000, 666000, 666000),

#if 0
	/*
	 * The sdhci core calls the clock ops with a spinlock held, which
	 * conflicts with the sleeping dvfs api.
	 * For now, boards must ensure that the core voltage does not drop
	 * below 1V, or that the sdmmc busses are set to 44 MHz or less.
	 */
	CORE_DVFS("sdmmc1",  1, KHZ, 44000,  52000,  52000,  52000,  52000),