]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/kernel-video.git/commitdiff
Merge branch 'ti-linux-3.14.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel...
authorPraneeth Bajjuri <praneeth@ti.com>
Mon, 8 Jun 2015 17:08:14 +0000 (12:08 -0500)
committerPraneeth Bajjuri <praneeth@ti.com>
Mon, 8 Jun 2015 17:08:14 +0000 (12:08 -0500)
* 'ti-linux-3.14.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel: (52 commits)
  mmc: host: omap_hsmmc: Fix DTO and DCRC handling
  drm/omap: ensure all displays have been probed
  ARM: DRA7: hwmod: Fix gpmc hwmod
  ARM: OMAP2+: AMX3XX: Add HWMOD_NEEDS_REIDLE to gpmc
  ARM: OMAP2+: omap_hwmod: Reidle flagged hwmods when restoring context
  ARM: OMAP2+: omap_hwmod: Add softreset to _reidle
  ARM: OMAP2+: omap_hwmod: Refactor HWMOD_NEEDS_REIDLE support code
  ARM: OMAP2+: omap_hwmod: Always restore saved hardreset context
  ARM: DRA7: hwmod: Fix GPMC from preventing core suspend
  ARM: DRA7: hwmod: fix gpmc hwmod
  media: ti-vpe: vip: Fix input/std/parm reporting
  media: ti-vpe: VIP/VPE/VPDMA: Correction of data type label.
  media: ti-vpe: vip: Fix format negotiation with sub-device
  OMAPDSS: dra7-tpd12s015: fix dependency to mcasp
  samples/rpmsg: add support for multiple instances
  Revert "ARM: OMAP: DRA7: change IPU1 clk domain to SWSUP for proper boot"
  ARM: OMAP2+: use separate IOMMU pdata to fix DRA7 IPU1 boot
  iommu/omap: fix boot issue on remoteprocs with AMMU/Unicache
  iommu/omap: add pdata ops for setting powerdomain constraint
  ARM: dts: am437x-sk-evm: disable DDR regulator in rtc-only/poweroff mode
  ...

Conflicts:
arch/arm/boot/dts/dra7.dtsi
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
drivers/iommu/omap-iommu.c
drivers/iommu/omap-iommu.h

Change-Id: I45cd013d30f0226f5f1e57b5e7824fc160c94eef
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
12 files changed:
1  2 
arch/arm/boot/dts/dra7-evm.dts
arch/arm/boot/dts/dra7.dtsi
arch/arm/boot/dts/dra7xx-clocks.dtsi
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
drivers/clk/ti/clk-7xx.c
drivers/gpu/drm/omapdrm/omap_drv.c
drivers/iommu/omap-iommu.c
drivers/iommu/omap-iommu.h
drivers/mmc/host/omap_hsmmc.c
drivers/remoteproc/omap_remoteproc.c
sound/soc/davinci/davinci-mcasp.c
ti_config_fragments/connectivity.cfg

index 379ca5eb0c90a13e30c51a9e6aaf054460de8cc4,56d0aba0335cdbc0aaebe9a2c88b2b9cd08768a9..f25c2bc0387a7cb8b0d23a8dcd71b54eedaf56aa
@@@ -1017,25 -900,13 +1045,30 @@@ i2c_p3_exp: &i2c2 
        serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
                1 2 0 0
        >;
 +      tx-num-evt = <8>;
 +      rx-num-evt = <8>;
 +};
 +
 +&mcasp7 {
 +      #sound-dai-cells = <0>;
 +
 +      status = "okay";
 +
 +      op-mode = <0>;  /* MCASP_IIS_MODE */
 +      tdm-slots = <4>;
 +      /* 4 serializer */
 +      serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
 +              2 1 0 0
 +      >;
 +      tx-num-evt = <8>;
 +      rx-num-evt = <8>;
  };
  
+ &mcasp8 {
+       /* not used for audio. only the AXR2 pin is used as GPIO */
+       status = "okay";
+ };
  &usb2_phy1 {
        phy-supply = <&ldousb_reg>;
  };
index 0cc93afd7b49514c40b0d712c0056c0755dc3e33,3dcc00d0eec11ae5547f0455e515d092696dd476..12a0c60bc114ef0cbbd5d69c4908cc814aa8dffa
                        status = "disabled";
                };
  
 -                      dmas = <&sdma 143 &dmacb>, <&sdma 142 &dmacb>;
 +              mcasp6: mcasp@48474000 {
 +                      compatible = "ti,dra7-mcasp-audio";
 +                      ti,hwmods = "mcasp6";
 +                      reg = <0x48474000 0x2000>,
 +                            <0x4844c000 0x1000>;
 +                      reg-names = "mpu","dat";
 +                      interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
 +                                   <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
 +                      interrupt-names = "tx", "rx";
 +                      dmas = <&sdma_xbar 139>, <&sdma_xbar 138>;
 +                      dma-names = "tx", "rx";
 +                      clocks = <&mcasp6_ahclkx_mux>;
 +                      clock-names = "fck";
 +                      status = "disabled";
 +              };
 +
 +              mcasp7: mcasp@48478000 {
 +                      compatible = "ti,dra7-mcasp-audio";
 +                      ti,hwmods = "mcasp7";
 +                      reg = <0x48478000 0x2000>,
 +                            <0x48450000 0x1000>;
 +                      reg-names = "mpu","dat";
 +                      interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
 +                                   <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
 +                      interrupt-names = "tx", "rx";
 +                      dmas = <&sdma_xbar 141>, <&sdma_xbar 140>;
 +                      dma-names = "tx", "rx";
 +                      clocks = <&mcasp7_ahclkx_mux>;
 +                      clock-names = "fck";
 +                      status = "disabled";
 +              };
 +
+               mcasp8: mcasp@4847c000 {
+                       compatible = "ti,dra7-mcasp-audio";
+                       ti,hwmods = "mcasp8";
+                       reg = <0x4847c000 0x2000>,
+                             <0x48454000 0x1000>;
+                       reg-names = "mpu","dat";
+                       interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tx", "rx";
++                      dmas = <&sdma_xbar 143>, <&sdma_xbar 142>;
+                       dma-names = "tx", "rx";
+                       clocks = <&mcasp8_ahclkx_mux>;
+                       clock-names = "fck";
+                       status = "disabled";
+               };
                vip1: vip@0x48970000 {
                          compatible = "ti,vip1";
                        reg = <0x48970000 0x10000>,
Simple merge
index aa2bf0ac8eef1cc8236473906a08715904909b1f,d0967a0846a84dd5f8f96c5417ad3b44d51bbdff..7d756d8e3c6c762b41e100fb145585fc9792c0de
@@@ -1913,33 -1793,17 +1910,49 @@@ static struct omap_hwmod dra7xx_mcasp3_
        },
  };
  
 +/* mcasp6 */
 +static struct omap_hwmod dra7xx_mcasp6_hwmod = {
 +      .name           = "mcasp6",
 +      .class          = &dra7xx_mcasp_hwmod_class,
 +      .clkdm_name     = "l4per2_clkdm",
 +      .main_clk       = "mcasp6_ahclkx_mux",
 +      .flags          = HWMOD_SWSUP_SIDLE_ACT,
 +      .prcm = {
 +              .omap4 = {
 +                      .clkctrl_offs = DRA7XX_CM_L4PER2_MCASP6_CLKCTRL_OFFSET,
 +                      .context_offs = DRA7XX_RM_L4PER2_MCASP6_CONTEXT_OFFSET,
 +                      .modulemode   = MODULEMODE_SWCTRL,
 +              },
 +      },
 +};
 +
 +/* mcasp7 */
 +static struct omap_hwmod dra7xx_mcasp7_hwmod = {
 +      .name           = "mcasp7",
 +      .class          = &dra7xx_mcasp_hwmod_class,
 +      .clkdm_name     = "l4per2_clkdm",
 +      .main_clk       = "mcasp7_ahclkx_mux",
 +      .flags          = HWMOD_SWSUP_SIDLE_ACT,
 +      .prcm = {
 +              .omap4 = {
 +                      .clkctrl_offs = DRA7XX_CM_L4PER2_MCASP7_CLKCTRL_OFFSET,
 +                      .context_offs = DRA7XX_RM_L4PER2_MCASP7_CONTEXT_OFFSET,
++                      .modulemode = MODULEMODE_SWCTRL,
++              },
++      },
++};
++
+ /* mcasp8 */
+ static struct omap_hwmod dra7xx_mcasp8_hwmod = {
+       .name           = "mcasp8",
+       .class          = &dra7xx_mcasp_hwmod_class,
+       .clkdm_name     = "l4per2_clkdm",
+       .main_clk       = "mcasp8_ahclkx_mux",
+       .flags          = HWMOD_SWSUP_SIDLE_ACT,
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = DRA7XX_CM_L4PER2_MCASP8_CLKCTRL_OFFSET,
+                       .context_offs = DRA7XX_RM_L4PER2_MCASP8_CONTEXT_OFFSET,
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
@@@ -3661,22 -3472,14 +3674,30 @@@ static struct omap_hwmod_ocp_if dra7xx_
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
  };
  
 +/* l4_per2 -> mcasp6 */
 +static struct omap_hwmod_ocp_if dra7xx_l4_per2__mcasp6 = {
 +      .master         = &dra7xx_l4_per2_hwmod,
 +      .slave          = &dra7xx_mcasp6_hwmod,
 +      .clk            = "l3_iclk_div",
 +      .user           = OCP_USER_MPU | OCP_USER_SDMA,
 +};
 +
 +/* l4_per2 -> mcasp7 */
 +static struct omap_hwmod_ocp_if dra7xx_l4_per2__mcasp7 = {
 +      .master         = &dra7xx_l4_per2_hwmod,
 +      .slave          = &dra7xx_mcasp7_hwmod,
 +      .clk            = "l3_iclk_div",
 +      .user           = OCP_USER_MPU | OCP_USER_SDMA,
 +};
 +
+ /* l4_per2 -> mcasp8 */
+ static struct omap_hwmod_ocp_if dra7xx_l4_per2__mcasp8 = {
+       .master         = &dra7xx_l4_per2_hwmod,
+       .slave          = &dra7xx_mcasp8_hwmod,
+       .clk            = "l3_iclk_div",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+ };
  static struct omap_hwmod_addr_space dra7xx_elm_addrs[] = {
        {
                .pa_start       = 0x48078000,
@@@ -4680,10 -4441,8 +4701,11 @@@ static struct omap_hwmod_ocp_if *dra7xx
        &dra7xx_l3_main_1__aes1,
        &dra7xx_l3_main_1__aes2,
        &dra7xx_l3_main_1__sha0,
 +      &dra7xx_l4_per2__mcasp2,
        &dra7xx_l4_per2__mcasp3,
 +      &dra7xx_l4_per2__mcasp6,
 +      &dra7xx_l4_per2__mcasp7,
+       &dra7xx_l4_per2__mcasp8,
        &dra7xx_l4_per1__elm,
        &dra7xx_l4_wkup__gpio1,
        &dra7xx_l4_per1__gpio2,
Simple merge
Simple merge
index 11d5d44676df1250685bc0e2e7429349b4793508,1b2c3ac2fe0d2f08db681403f111092fb2acde49..b5548605bb71ddcd4b322f51c8e1d840d07566a8
@@@ -1100,9 -1090,15 +1109,18 @@@ static int omap_iommu_runtime_resume(st
        struct omap_iommu *obj = to_iommu(dev);
        int ret = 0;
  
 -      if (pdata && pdata->deassert_reset) {
+       if (pdata && pdata->set_pwrdm_constraint) {
+               ret = pdata->set_pwrdm_constraint(pdev, true, &obj->pwrst);
+               if (ret) {
+                       dev_warn(dev, "pwrdm_constraint failed to be set, status = %d\n",
+                                ret);
+               }
+       }
++
 +      /* do not deassert reset only during initial boot for late attach */
 +      if ((!obj->late_attach || obj->domain) &&
 +          pdata && pdata->deassert_reset) {
                ret = pdata->deassert_reset(pdev, pdata->reset_name);
                if (ret) {
                        dev_err(dev, "deassert_reset failed: %d\n", ret);
index 2d9b41c0d494842c82528d241fd0c809ddca96a2,5d76c0844a82c2a21a64d838803bea0eb82f3c9b..a7331a3cf13f9eb27b591de9933c3c992720ceb0
@@@ -61,7 -61,7 +61,8 @@@ struct omap_iommu 
        int has_bus_err_back;
        u32 id;
  
 +      u32 late_attach;
+       u8 pwrst;
  };
  
  struct cr_regs {
Simple merge
index 1f00ca353ca5515a72f866949cd6a46faa7f368f,d4a0e0d9f475bbf3ebfed94b1eb063efb54ef66e..231dc8f3920ae9753c513ba564711807f8ec40ea
@@@ -384,14 -402,25 +406,27 @@@ static int omap_rproc_start(struct rpro
                goto put_mbox;
        }
  
 -      ret = pdata->device_enable(pdev);
 -      if (ret) {
 -              dev_err(dev, "omap_device_enable failed: %d\n", ret);
 -              goto reset_timers;
 +      if (!rproc->late_attach) {
 +              ret = pdata->device_enable(pdev);
 +              if (ret) {
 +                      dev_err(dev, "omap_device_enable failed: %d\n", ret);
 +                      goto reset_timers;
 +              }
        }
  
+       /*
+        * remote processor is up, so update the runtime pm status and
+        * enable the auto-suspend. The device usage count is incremented
+        * manually for balancing it for auto-suspend
+        */
+       pm_runtime_set_active(dev);
+       pm_runtime_enable(dev);
+       pm_runtime_get_noresume(dev);
+       pm_runtime_set_autosuspend_delay(dev, oproc->autosuspend_delay);
+       pm_runtime_use_autosuspend(dev);
+       pm_runtime_mark_last_busy(dev);
+       pm_runtime_put_autosuspend(dev);
        return 0;
  
  reset_timers:
@@@ -416,21 -459,29 +465,39 @@@ static int omap_rproc_stop(struct rpro
  
        ret = omap_rproc_disable_timers(pdev, true);
        if (ret)
-               return ret;
+               goto enable_device;
  
 +      /*
 +       * During late attach, we use non-zeroing dma ops to prevent the kernel
 +       * from overwriting already loaded code and data segments. When
 +       * shutting down the processor, we restore the normal zeroing dma ops.
 +       * This allows the kernel to clear memory when loading a new remoteproc
 +       * binary or during error recovery with the current remoteproc binary.
 +       */
 +      if (rproc->late_attach)
 +              set_dma_ops(dev, &arm_dma_ops);
 +
        mbox_free_channel(oproc->mbox);
  
+       /*
+        * update the runtime pm states and status now that the remoteproc
+        * has stopped
+        */
+       pm_runtime_dont_use_autosuspend(dev);
+       pm_runtime_put_noidle(dev);
+       pm_runtime_disable(dev);
+       pm_runtime_set_suspended(dev);
        return 0;
+ enable_device:
+       pdata->device_enable(pdev);
+ out:
+       /* schedule the next auto-suspend */
+       pm_runtime_mark_last_busy(dev);
+       pm_runtime_put_autosuspend(dev);
+       return ret;
  }
  
  static struct rproc_ops omap_rproc_ops = {
Simple merge
Simple merge