|
@@ -41,6 +41,8 @@
|
|
|
#include <linux/mtd/physmap.h>
|
|
|
#include <linux/mtd/sh_flctl.h>
|
|
|
#include <linux/pm_clock.h>
|
|
|
+#include <linux/regulator/fixed.h>
|
|
|
+#include <linux/regulator/machine.h>
|
|
|
#include <linux/smsc911x.h>
|
|
|
#include <linux/sh_intc.h>
|
|
|
#include <linux/tca6416_keypad.h>
|
|
@@ -203,6 +205,33 @@
|
|
|
* amixer set "HPOUTR Mixer DACH" on
|
|
|
*/
|
|
|
|
|
|
+/* Fixed 3.3V and 1.8V regulators to be used by multiple devices */
|
|
|
+static struct regulator_consumer_supply fixed1v8_power_consumers[] =
|
|
|
+{
|
|
|
+ /*
|
|
|
+ * J22 on mackerel switches mmcif.0 and sdhi.1 between 1.8V and 3.3V
|
|
|
+ * Since we cannot support both voltages, we support the default 1.8V
|
|
|
+ */
|
|
|
+ REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"),
|
|
|
+ REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.1"),
|
|
|
+ REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"),
|
|
|
+ REGULATOR_SUPPLY("vqmmc", "sh_mmcif.0"),
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_consumer_supply fixed3v3_power_consumers[] =
|
|
|
+{
|
|
|
+ REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
|
|
|
+ REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"),
|
|
|
+ REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.2"),
|
|
|
+ REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.2"),
|
|
|
+};
|
|
|
+
|
|
|
+/* Dummy supplies, where voltage doesn't matter */
|
|
|
+static struct regulator_consumer_supply dummy_supplies[] = {
|
|
|
+ REGULATOR_SUPPLY("vddvario", "smsc911x"),
|
|
|
+ REGULATOR_SUPPLY("vdd33a", "smsc911x"),
|
|
|
+};
|
|
|
+
|
|
|
/* MTD */
|
|
|
static struct mtd_partition nor_flash_partitions[] = {
|
|
|
{
|
|
@@ -1383,6 +1412,12 @@ static void __init mackerel_init(void)
|
|
|
u32 srcr4;
|
|
|
struct clk *clk;
|
|
|
|
|
|
+ regulator_register_always_on(0, "fixed-1.8V", fixed1v8_power_consumers,
|
|
|
+ ARRAY_SIZE(fixed1v8_power_consumers), 1800000);
|
|
|
+ regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers,
|
|
|
+ ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
|
|
|
+ regulator_register_fixed(2, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
|
|
+
|
|
|
/* External clock source */
|
|
|
clk_set_rate(&sh7372_dv_clki_clk, 27000000);
|
|
|
|