]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'late/dt' into for-next
authorArnd Bergmann <arnd@arndb.de>
Tue, 19 Feb 2013 16:09:13 +0000 (17:09 +0100)
committerArnd Bergmann <arnd@arndb.de>
Tue, 19 Feb 2013 16:09:13 +0000 (17:09 +0100)
* late/dt: (21 commits)
  ARM: dts: add dtsi for imx6q and imx6dl
  ARM: dts: rename imx6q.dtsi to imx6qdl.dtsi
  ARM: dts: i.MX6: Add regulator delay support
  ARM: dts: Add device tree entry for onewire master on i.MX53
  ARM: i.MX53: Add clocks for i.mx53 onewire master.
  W1: Add device tree support to MXC onewire master.
  ARM: imx: enable imx6q-cpufreq support
  ARM: dts: Add apf51 basic support
  ARM i.MX6: change mxs usbphy clock usage
  ARM: dts: imx6q: Remove silicon version from SDMA firmware
  ARM i.MX53: dts: add oftree for MBa53 baseboard
  ARM i.MX53: add dts for the TQ tqma53 module
  ARM: dts: imx53: pinctrl update
  ARM i.MX51 babbage: Add keypad support
  ARM: dts: imx: Add imx51 KPP entry
  ARM: dts: imx25-karo-tx25: Put status entry in the end
  ARM: mx25pdk: Add device tree support
  ARM: dts: imx: use nodes label in board dts
  ARM: dts: add missing imx dtb targets
  ARM: boot: dts: Add an entry for imx27-pdk.dtb
  ...

Conflicts:
arch/arm/mach-imx/mach-imx6q.c

1  2 
arch/arm/boot/dts/Makefile
arch/arm/mach-imx/clk-imx6q.c
arch/arm/mach-imx/mach-imx6q.c

Simple merge
Simple merge
index 1786b2d1257eb0f77b92564f93f07f17b8fbdf65,2f974f5096fdf086d9a259e9dcf4b5c54c30a611..9ffd103b27e4da660f229cca79359a36fbeb1d38
@@@ -12,6 -12,8 +12,7 @@@
  
  #include <linux/clk.h>
  #include <linux/clkdev.h>
 -#include <linux/cpuidle.h>
+ #include <linux/cpu.h>
  #include <linux/delay.h>
  #include <linux/export.h>
  #include <linux/init.h>
@@@ -200,14 -203,80 +202,77 @@@ static void __init imx6q_init_machine(v
        imx6q_1588_init();
  }
  
 -static struct cpuidle_driver imx6q_cpuidle_driver = {
 -      .name                   = "imx6q_cpuidle",
 -      .owner                  = THIS_MODULE,
 -      .en_core_tk_irqen       = 1,
 -      .states[0]              = ARM_CPUIDLE_WFI_STATE,
 -      .state_count            = 1,
 -};
 -
+ #define OCOTP_CFG3                    0x440
+ #define OCOTP_CFG3_SPEED_SHIFT                16
+ #define OCOTP_CFG3_SPEED_1P2GHZ               0x3
+ static void __init imx6q_opp_check_1p2ghz(struct device *cpu_dev)
+ {
+       struct device_node *np;
+       void __iomem *base;
+       u32 val;
+       np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-ocotp");
+       if (!np) {
+               pr_warn("failed to find ocotp node\n");
+               return;
+       }
+       base = of_iomap(np, 0);
+       if (!base) {
+               pr_warn("failed to map ocotp\n");
+               goto put_node;
+       }
+       val = readl_relaxed(base + OCOTP_CFG3);
+       val >>= OCOTP_CFG3_SPEED_SHIFT;
+       if ((val & 0x3) != OCOTP_CFG3_SPEED_1P2GHZ)
+               if (opp_disable(cpu_dev, 1200000000))
+                       pr_warn("failed to disable 1.2 GHz OPP\n");
+ put_node:
+       of_node_put(np);
+ }
+ static void __init imx6q_opp_init(struct device *cpu_dev)
+ {
+       struct device_node *np;
+       np = of_find_node_by_path("/cpus/cpu@0");
+       if (!np) {
+               pr_warn("failed to find cpu0 node\n");
+               return;
+       }
+       cpu_dev->of_node = np;
+       if (of_init_opp_table(cpu_dev)) {
+               pr_warn("failed to init OPP table\n");
+               goto put_node;
+       }
+       imx6q_opp_check_1p2ghz(cpu_dev);
+ put_node:
+       of_node_put(np);
+ }
+ struct platform_device imx6q_cpufreq_pdev = {
+       .name = "imx6q-cpufreq",
+ };
  static void __init imx6q_init_late(void)
  {
 -      imx_cpuidle_init(&imx6q_cpuidle_driver);
 +      /*
 +       * WAIT mode is broken on TO 1.0 and 1.1, so there is no point
 +       * to run cpuidle on them.
 +       */
 +      if (imx6q_revision() > IMX_CHIP_REVISION_1_1)
 +              imx6q_cpuidle_init();
+       if (IS_ENABLED(CONFIG_ARM_IMX6Q_CPUFREQ)) {
+               imx6q_opp_init(&imx6q_cpufreq_pdev.dev);
+               platform_device_register(&imx6q_cpufreq_pdev);
+       }
  }
  
  static void __init imx6q_map_io(void)