1. 18 1月, 2014 16 次提交
  2. 28 12月, 2013 1 次提交
  3. 26 12月, 2013 2 次提交
    • S
      ARM: OMAP2+: hwmod_data: fix missing OMAP_INTC_START in irq data · 6d4c8830
      Suman Anna 提交于
      Commit 7d7e1eba (ARM: OMAP2+: Prepare for irqs.h removal) and commit
      ec2c0825 (ARM: OMAP2+: Remove hardcoded IRQs and enable SPARSE_IRQ)
      updated the way interrupts for OMAP2/3 devices are defined in the
      HWMOD data structures to being an index plus a fixed offset (defined
      by OMAP_INTC_START).
      
      Couple of irqs in the OMAP2/3 hwmod data were misconfigured completely
      as they were missing this OMAP_INTC_START relative offset. Add this
      offset back to fix the incorrect irq data for the following modules:
      	OMAP2 - GPMC, RNG
      	OMAP3 - GPMC, ISP MMU & IVA MMU
      Signed-off-by: NSuman Anna <s-anna@ti.com>
      Fixes: 7d7e1eba ("ARM: OMAP2+: Prepare for irqs.h removal")
      Fixes: ec2c0825 ("ARM: OMAP2+: Remove hardcoded IRQs and enable SPARSE_IRQ")
      Cc: Tony Lindgren <tony@atomide.com>
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      6d4c8830
    • R
      ARM: DRA7: hwmod: Fix boot crash with DEBUG_LL · 38958c15
      Rajendra Nayak 提交于
      With commit '7dedd346: ARM: OMAP2+: hwmod: Fix a crash in _setup_reset() with
       DEBUG_LL' we moved from parsing cmdline to identify uart used for earlycon
      to using the requsite hwmod CONFIG_DEBUG_OMAPxUARTy FLAGS.
      
      On DRA7 though, we seem to be missing this flag, and atleast on the DRA7 EVM
      where we use uart1 for console, boot fails with DEBUG_LL enabled.
      Reported-by: NLokesh Vutla <lokeshvutla@ti.com>
      Tested-by:  Lokesh Vutla <lokeshvutla@ti.com> # on a different base
      Signed-off-by: NRajendra Nayak <rnayak@ti.com>
      Fixes: 7dedd346 ("ARM: OMAP2+: hwmod: Fix a crash in _setup_reset() with DEBUG_LL")
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      38958c15
  4. 18 12月, 2013 1 次提交
  5. 11 12月, 2013 1 次提交
  6. 10 12月, 2013 3 次提交
    • N
      ARM: OMAP2+: hwmod: Fix usage of invalid iclk / oclk when clock node is not present · 0e7dc862
      Nishanth Menon 提交于
      commit dc75925d(OMAP: hwmod: Fix the missing braces) introduced
      missing braces, however, we just set return result if clk_get fail
      and we populate the error pointer in clk pointer and pass it along to
      clk_prepare. This is wrong. The intent seems to be retry remaining
      clocks if they are available and warn the ones we cant find clks for.
      
      With the current logic, we see the following crash:
      omap_hwmod: l3_main: cannot clk_get interface_clk emac_ick
      Unable to handle kernel NULL pointer dereference at virtual address 00000032
      pgd = c0004000
      [00000032] *pgd=00000000
      Internal error: Oops: 5 [#1] SMP ARM
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.13.0-rc1-00044-gcc9fd5a-dirty #19
      task: ce0c3440 ti: ce0c4000 task.ti: ce0c4000
      PC is at __clk_prepare+0x10/0x74
      LR is at clk_prepare+0x14/0x24
        <snip>
      [<c044d59c>] (__clk_prepare+0x10/0x74) from [<c044d9b0>] (clk_prepare+0x14/0x24)
      [<c044d9b0>] (clk_prepare+0x14/0x24) from [<c077d8c4>] (_init+0x24c/0x3bc)
      [<c077d8c4>] (_init+0x24c/0x3bc) from [<c0027328>] (omap_hwmod_for_each+0x34/0x5c)
      [<c0027328>] (omap_hwmod_for_each+0x34/0x5c) from [<c077dfa0>] (__omap_hwmod_setup_all+0x24/0x40)
      [<c077dfa0>] (__omap_hwmod_setup_all+0x24/0x40) from [<c0008928>] (do_one_initcall+0x38/0x168)
      [<c0008928>] (do_one_initcall+0x38/0x168) from [<c0771be8>] (kernel_init_freeable+0xfc/0x1cc)
      [<c0771be8>] (kernel_init_freeable+0xfc/0x1cc) from [<c0521064>] (kernel_init+0x8/0x110)
      [<c0521064>] (kernel_init+0x8/0x110) from [<c000e568>] (ret_from_fork+0x14/0x2c)
      Code: e92d4038 e2504000 01a05004 0a000005 (e5943034)
      
      So, just warn and continue instead of proceeding and crashing, with
      missing clock nodes/bad data, we will eventually fail, however we
      should now have enough information to identify the culprit.
      Signed-off-by: NNishanth Menon <nm@ti.com>
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      0e7dc862
    • R
      ARM: OMAP3: hwmod data: Don't prevent RESET of USB Host module · 7f4d3641
      Roger Quadros 提交于
      Unlike what the comment states, errata i660 does not state that we
      can't RESET the USB host module. Instead it states that RESET is the
      only way to recover from a deadlock situation.
      
      RESET ensures that the module is in a known good state irrespective
      of what bootloader does with the module, so it must be done at boot.
      Signed-off-by: NRoger Quadros <rogerq@ti.com>
      Tested-by: Tomi Valkeinen <tomi.valkeinen@ti.com> # Panda, BeagleXM
      Fixes: de231388 ("ARM: OMAP: USB: EHCI and OHCI hwmod structures for OMAP3")
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      7f4d3641
    • R
      ARM: OMAP2+: hwmod: Fix SOFTRESET logic · 313a76ee
      Roger Quadros 提交于
      In _ocp_softreset(), after _set_softreset() + write_sysconfig(),
      the hwmod's sysc_cache will always contain SOFTRESET bit set
      so all further writes to sysconfig using this cache will initiate
      a repeated SOFTRESET e.g. enable_sysc(). This is true for OMAP3 like
      platforms that have RESET_DONE status in the SYSSTATUS register and
      so the the SOFTRESET bit in SYSCONFIG is not automatically cleared.
      It is not a problem for OMAP4 like platforms that indicate RESET
      completion by clearing the SOFTRESET bit in the SYSCONFIG register.
      
      This repeated SOFTRESET is undesired and was the root cause of
      USB host issues on OMAP3 platforms when hwmod was allowed to do the
      SOFTRESET for the USB Host module.
      
      To fix this we clear the SOFTRESET bit and update the sysconfig
      register + sysc_cache using write_sysconfig().
      Signed-off-by: NRoger Quadros <rogerq@ti.com>
      Tested-by: Tomi Valkeinen <tomi.valkeinen@ti.com> # Panda, BeagleXM
      [paul@pwsan.com: renamed _clr_softreset() to _clear_softreset()]
      Signed-off-by: NPaul Walmsley <paul@pwsan.com>
      313a76ee
  7. 09 12月, 2013 1 次提交
  8. 07 12月, 2013 2 次提交
    • N
      ARM: OMAP2+: Fix the machine entry for am3517 · caef4ee8
      Nishanth Menon 提交于
      The am3517 is wrongly booting as omap3 which means that the am3517
      specific devices like Ethernet won't work when booted with device
      tree. Now with the new devices defined in am3517.dtsi, let's use
      that instead of the omap3.dtsi, and add a separate machine entry
      for am3517 so am3517-evm can use it.
      Signed-off-by: NNishanth Menon <nm@ti.com>
      [tony@atomide.com: updated comments and fixed build without omap3]
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      caef4ee8
    • T
      ARM: OMAP2+: Fix overwriting hwmod data with data from device tree · 5e863c56
      Tony Lindgren 提交于
      We have some device tree properties where the ti,hwmod have multiple
      values:
      
      am33xx.dtsi:	ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
      am4372.dtsi:	ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
      dra7.dtsi:	ti,hwmods = "l3_main_1", "l3_main_2";
      omap3.dtsi:	ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
      omap3.dtsi:	ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
      omap4.dtsi:	ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
      omap5.dtsi:	ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
      
      That's not correct way of doing things in this case because these are
      separate devices with their own address space, interrupts, SYSCONFIG
      registers and can set their PM states independently.
      
      So they should all be fixed up to be separate devices in the .dts files.
      
      We also have the related data removed for at least omap4 in commit
      3b9b1015 (ARM: OMAP4: hwmod data: Clean up the data file), so
      that data is wrongly initialized as null data.
      
      So we need to fix two bugs:
      
      1. We are only checking the first entry of the ti,hwmods property
      
         This means that we're only initializing the first hwmods entry
         instead of the ones listed in the ti,hwmods property.
      
      2. We are only checking the child nodes, not the nodes themselves
      
         This means that anything listed at OCP level is currently just
         ignored and unitialized and at least the omap4 case, with the
         legacy data missing from the hwmod.
      
      Fix both of the issues by using an index to the ti,hwmods property
      and changing the hwmod lookup function to also check the current node
      for ti,hwmods property instead of just the children.
      
      While at it, let's also add some warnings for the bad data so it's
      easier to fix.
      
      Cc: "Benoît Cousson" <bcousson@baylibre.com>
      Acked-by: NPaul Walmsley <paul@pwsan.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      5e863c56
  9. 03 12月, 2013 1 次提交
  10. 27 11月, 2013 1 次提交
  11. 26 11月, 2013 2 次提交
    • T
      ARM: OMAP2+: Fix eMMC on n900 with device tree · edd5eb4e
      Tony Lindgren 提交于
      Looks like we need to configure the regulators and use the pdata
      quirk to make eMMC work with device tree.
      
      It seems that mostly vaux3 is used, and only some earlier revisions
      used vmmc2. This has been tested to work on devices where the
      system_rev passed by the bootloader has versions 0x0010, 0x2101
      and 0x2204.
      
      Cc: devicetree@vger.kernel.org
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Signed-off-by: NSebastian Reichel <sre@debian.org>
      [tony@atomide.com: updated with pinctrl changes and comments from Sebastian]
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      edd5eb4e
    • O
      ARM: omap: fix warning with LPAE build · 6dd1e357
      Olof Johansson 提交于
      Some omap3 code is throwing a warning:
      arch/arm/mach-omap2/pm34xx.c: In function 'omap3_save_secure_ram_context':
      arch/arm/mach-omap2/pm34xx.c:123:32: warning: cast to pointer from
        integer of different size [-Wint-to-pointer-cast]
      
      In reality this code will never actually execute with LPAE=y, since
      Cortex-A8 doesn't support it. So downcasting the __pa() is safe in
      this case.
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      Acked-by: NTony Lindgren <tony@atomide.com>
      6dd1e357
  12. 19 11月, 2013 4 次提交
  13. 16 11月, 2013 2 次提交
  14. 15 11月, 2013 3 次提交
    • N
      ARM: OMAP2+: omap_device: maintain sane runtime pm status around suspend/resume · 3522bf7b
      Nishanth Menon 提交于
      OMAP device hooks around suspend|resume_noirq ensures that hwmod
      devices are forced to idle using omap_device_idle/enable as part of
      the last stage of suspend activity.
      
      For a device such as i2c who uses autosuspend, it is possible to enter
      the suspend path with dev->power.runtime_status = RPM_ACTIVE.
      
      As part of the suspend flow, the generic runtime logic would increment
      it's dev->power.disable_depth to 1. This should prevent further
      pm_runtime_get_sync from succeeding once the runtime_status has been
      set to RPM_SUSPENDED.
      
      Now, as part of the suspend_noirq handler in omap_device, we force the
      following: if the device status is !suspended, we force the device
      to idle using omap_device_idle (clocks are cut etc..). This ensures
      that from a hardware perspective, the device is "suspended". However,
      runtime_status is left to be active.
      
      *if* an operation is attempted after this point to
      pm_runtime_get_sync, runtime framework depends on runtime_status to
      indicate accurately the device status, and since it sees it to be
      ACTIVE, it assumes the module is functional and returns a non-error
      value. As a result the user will see pm_runtime_get succeed, however a
      register access will crash due to the lack of clocks.
      
      To prevent this from happening, we should ensure that runtime_status
      exactly indicates the device status. As a result of this change
      any further calls to pm_runtime_get* would return -EACCES (since
      disable_depth is 1). On resume, we restore the clocks and runtime
      status exactly as we suspended with. These operations are not expected
      to fail as we update the states after the core runtime framework has
      suspended itself and restore before the core runtime framework has
      resumed.
      
      Cc: stable@vger.kernel.org # v3.4+
      Reported-by: NJ Keerthy <j-keerthy@ti.com>
      Signed-off-by: NNishanth Menon <nm@ti.com>
      Acked-by: NRajendra Nayak <rnayak@ti.com>
      Acked-by: NKevin Hilman <khilman@linaro.org>
      Reviewed-by: NFelipe Balbi <balbi@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      3522bf7b
    • W
      ARM: OMAP3: Beagle: fix return value check in beagle_opp_init() · c27f2de7
      Wei Yongjun 提交于
      In case of error, the function get_cpu_device() returns NULL pointer
      not ERR_PTR(). The IS_ERR() test in the return value check should be
      replaced with NULL test.
      Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      c27f2de7
    • W
      ARM: OMAP2+: smsc911x: fix return value check in gpmc_smsc911x_init() · 30e3488c
      Wei Yongjun 提交于
      In case of error, the function platform_device_register_resndata()
      returns ERR_PTR() and never returns NULL. The NULL test in the return
      value check should be replaced with IS_ERR().
      Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Acked-by: NIgor Grinberg <grinberg@compulab.co.il>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      30e3488c