i2c@7000d000 {
                clock-frequency = <400000>;
 +
 +              adt7461@4c {
 +                      compatible = "adi,adt7461";
 +                      reg = <0x4c>;
 +              };
        };
  
+       i2s@70002a00 {
+               status = "disable";
+       };
+ 
+       sound {
+               compatible = "nvidia,tegra-audio-alc5632-paz00",
+                       "nvidia,tegra-audio-alc5632";
+ 
+               nvidia,model = "Compal PAZ00";
+ 
+               nvidia,audio-routing =
+                       "Int Spk", "SPKOUT",
+                       "Int Spk", "SPKOUTN",
+                       "Headset Mic", "MICBIAS1",
+                       "MIC1", "Headset Mic",
+                       "Headset Stereophone", "HPR",
+                       "Headset Stereophone", "HPL";
+ 
+               nvidia,audio-codec = <&alc5632>;
+               nvidia,i2s-controller = <&tegra_i2s1>;
+               nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
+       };
+ 
        serial@70006000 {
                clock-frequency = <216000000>;
        };
 
  obj-y                                   += timer.o
  obj-y                                   += pinmux.o
  obj-y                                 += fuse.o
+ obj-y                                 += pmc.o
 +obj-$(CONFIG_CPU_IDLE)                        += cpuidle.o
 +obj-$(CONFIG_CPU_IDLE)                        += sleep.o
  obj-$(CONFIG_ARCH_TEGRA_2x_SOC)               += powergate.o
  obj-$(CONFIG_ARCH_TEGRA_2x_SOC)         += tegra2_clocks.o
  obj-$(CONFIG_ARCH_TEGRA_2x_SOC)               += tegra2_emc.o
  obj-$(CONFIG_ARCH_TEGRA_2x_SOC)               += pinmux-tegra20-tables.o
  obj-$(CONFIG_ARCH_TEGRA_3x_SOC)               += pinmux-tegra30-tables.o
  obj-$(CONFIG_ARCH_TEGRA_3x_SOC)               += board-dt-tegra30.o
 -obj-$(CONFIG_SMP)                       += platsmp.o localtimer.o headsmp.o
 +obj-$(CONFIG_ARCH_TEGRA_3x_SOC)               += tegra30_clocks.o
 +obj-$(CONFIG_SMP)                     += platsmp.o headsmp.o
  obj-$(CONFIG_HOTPLUG_CPU)               += hotplug.o
- obj-$(CONFIG_TEGRA_SYSTEM_DMA)                += dma.o
+ obj-$(CONFIG_TEGRA_SYSTEM_DMA)                += dma.o apbio.o
  obj-$(CONFIG_CPU_FREQ)                  += cpu-tegra.o
  obj-$(CONFIG_TEGRA_PCI)                       += pcie.o
  obj-$(CONFIG_USB_SUPPORT)             += usb_phy.o
 
  #ifdef CONFIG_ARCH_TEGRA_3x_SOC
  void __init tegra30_init_early(void)
  {
 +      tegra30_init_clocks();
        tegra_init_cache(0x441, 0x551);
+       tegra_pmc_init();
  }
  #endif
 
  
  #include <linux/kernel.h>
  #include <linux/io.h>
- #include <linux/module.h>
++#include <linux/export.h>
  
  #include <mach/iomap.h>
  
  {
        unsigned long long lo, hi;
  
-       lo = fuse_readl(FUSE_UID_LOW);
-       hi = fuse_readl(FUSE_UID_HIGH);
+       lo = tegra_fuse_readl(FUSE_UID_LOW);
+       hi = tegra_fuse_readl(FUSE_UID_HIGH);
        return (hi << 32ull) | lo;
  }
- 
- int tegra_sku_id(void)
- {
-       int sku_id;
-       u32 reg = fuse_readl(FUSE_SKU_INFO);
-       sku_id = reg & 0xFF;
-       return sku_id;
- }
- 
- int tegra_cpu_process_id(void)
- {
-       int cpu_process_id;
-       u32 reg = fuse_readl(FUSE_SPARE_BIT);
-       cpu_process_id = (reg >> 6) & 3;
-       return cpu_process_id;
- }
- 
- int tegra_core_process_id(void)
- {
-       int core_process_id;
-       u32 reg = fuse_readl(FUSE_SPARE_BIT);
-       core_process_id = (reg >> 12) & 3;
-       return core_process_id;
- }
 +EXPORT_SYMBOL(tegra_chip_uid);
 
  
  static int sa1100_rtc_open(struct device *dev)
  {
+       struct sa1100_rtc *info = dev_get_drvdata(dev);
+       struct rtc_device *rtc = info->rtc;
        int ret;
-       struct platform_device *plat_dev = to_platform_device(dev);
-       struct rtc_device *rtc = platform_get_drvdata(plat_dev);
  
-       ret = request_irq(IRQ_RTC1Hz, sa1100_rtc_interrupt, 0, "rtc 1Hz", dev);
+       ret = clk_prepare_enable(info->clk);
+       if (ret)
+               goto fail_clk;
 -      ret = request_irq(info->irq_1hz, sa1100_rtc_interrupt, IRQF_DISABLED,
 -              "rtc 1Hz", dev);
++      ret = request_irq(info->irq_1hz, sa1100_rtc_interrupt, 0, "rtc 1Hz", dev);
        if (ret) {
-               dev_err(dev, "IRQ %d already in use.\n", IRQ_RTC1Hz);
+               dev_err(dev, "IRQ %d already in use.\n", info->irq_1hz);
                goto fail_ui;
        }
-       ret = request_irq(IRQ_RTCAlrm, sa1100_rtc_interrupt, 0,
-                         "rtc Alrm", dev);
 -      ret = request_irq(info->irq_alarm, sa1100_rtc_interrupt, IRQF_DISABLED,
 -              "rtc Alrm", dev);
++      ret = request_irq(info->irq_alarm, sa1100_rtc_interrupt, 0, "rtc Alrm", dev);
        if (ret) {
-               dev_err(dev, "IRQ %d already in use.\n", IRQ_RTCAlrm);
+               dev_err(dev, "IRQ %d already in use.\n", info->irq_alarm);
                goto fail_ai;
        }
        rtc->max_user_freq = RTC_FREQ;
 
                return -ENOMEM;
  
        if (audmux_clk)
-               clk_enable(audmux_clk);
+               clk_prepare_enable(audmux_clk);
  
 -      ptcr = readl(audmux_base + MXC_AUDMUX_V2_PTCR(port));
 -      pdcr = readl(audmux_base + MXC_AUDMUX_V2_PDCR(port));
 +      ptcr = readl(audmux_base + IMX_AUDMUX_V2_PTCR(port));
 +      pdcr = readl(audmux_base + IMX_AUDMUX_V2_PDCR(port));
  
        if (audmux_clk)
-               clk_disable(audmux_clk);
+               clk_disable_unprepare(audmux_clk);
  
        ret = snprintf(buf, PAGE_SIZE, "PDCR: %08x\nPTCR: %08x\n",
                       pdcr, ptcr);
                return -ENOSYS;
  
        if (audmux_clk)
-               clk_enable(audmux_clk);
+               clk_prepare_enable(audmux_clk);
  
 -      writel(ptcr, audmux_base + MXC_AUDMUX_V2_PTCR(port));
 -      writel(pdcr, audmux_base + MXC_AUDMUX_V2_PDCR(port));
 +      writel(ptcr, audmux_base + IMX_AUDMUX_V2_PTCR(port));
 +      writel(pdcr, audmux_base + IMX_AUDMUX_V2_PDCR(port));
  
        if (audmux_clk)
-               clk_disable(audmux_clk);
+               clk_disable_unprepare(audmux_clk);
  
        return 0;
  }