1. 09 1月, 2014 3 次提交
  2. 18 12月, 2013 1 次提交
  3. 11 12月, 2013 1 次提交
  4. 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
  5. 09 12月, 2013 1 次提交
  6. 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
  7. 03 12月, 2013 1 次提交
  8. 27 11月, 2013 1 次提交
  9. 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
  10. 19 11月, 2013 4 次提交
  11. 16 11月, 2013 2 次提交
  12. 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
  13. 07 11月, 2013 2 次提交
    • P
      mtd: nand: omap: combine different flavours of 1-bit hamming ecc schemes · c66d0391
      Pekon Gupta 提交于
      OMAP NAND driver currently supports multiple flavours of 1-bit Hamming
      ecc-scheme, like:
      - OMAP_ECC_HAMMING_CODE_DEFAULT
      	1-bit hamming ecc code using software library
      - OMAP_ECC_HAMMING_CODE_HW
      	1-bit hamming ecc-code using GPMC h/w engine
      - OMAP_ECC_HAMMING_CODE_HW_ROMCODE
      	1-bit hamming ecc-code using GPMC h/w engin with ecc-layout compatible
      	to ROM code.
      
      This patch combines above multiple ecc-schemes into single implementation:
      - OMAP_ECC_HAM1_CODE_HW
      	1-bit hamming ecc-code using GPMC h/w engine with ROM-code compatible
      	ecc-layout.
      Signed-off-by: NPekon Gupta <pekon@ti.com>
      Reviewed-by: NFelipe Balbi <balbi@ti.com>
      Acked-by: NTony Lindgren <tony@atomide.com>
      Tested-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      c66d0391
    • P
      ARM: OMAP2+: cleaned-up DT support of various ECC schemes · ac65caf5
      Pekon Gupta 提交于
      OMAP NAND driver support multiple ECC scheme, which can used in different
      flavours, depending on in-build Hardware engines present on SoC.
      
      This patch updates following in DT bindings related to sectionion of ecc-schemes
      - ti,elm-id: replaces elm_id (maintains backward compatibility)
      - ti,nand-ecc-opts: selection of h/w or s/w implementation of an ecc-scheme
      	depends on ti,elm-id. (supported values ham1, bch4, and bch8)
      - maintain backward compatibility to deprecated DT bindings (sw, hw, hw-romcode)
      
      Below table shows different flavours of ecc-schemes supported by OMAP devices
      +---------------------------------------+---------------+---------------+
      | ECC scheme                            |ECC calculation|Error detection|
      +---------------------------------------+---------------+---------------+
      |OMAP_ECC_HAM1_CODE_HW                  |H/W (GPMC)     |S/W            |
      +---------------------------------------+---------------+---------------+
      |OMAP_ECC_BCH8_CODE_HW_DETECTION_SW     |H/W (GPMC)     |S/W            |
      |(requires CONFIG_MTD_NAND_ECC_BCH)     |               |               |
      +---------------------------------------+---------------+---------------+
      |OMAP_ECC_BCH8_CODE_HW                  |H/W (GPMC)     |H/W (ELM)      |
      |(requires CONFIG_MTD_NAND_OMAP_BCH &&  |               |               |
      | ti,elm-id in DT)                      |               |               |
      +---------------------------------------+---------------+---------------+
      
      To optimize footprint of omap2-nand driver, selection of some ECC schemes
      also require enabling following Kconfigs, in addition to setting appropriate
      DT bindings
      - Kconfig:CONFIG_MTD_NAND_ECC_BCH        error detection done in software
      - Kconfig:CONFIG_MTD_NAND_OMAP_BCH       error detection done by h/w engine
      Signed-off-by: NPekon Gupta <pekon@ti.com>
      Reviewed-by: NFelipe Balbi <balbi@ti.com>
      Acked-by: NTony Lindgren <tony@atomide.com>
      Tested-by: NEzequiel Garcia <ezequiel.garcia@free-electrons.com>
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      ac65caf5
  14. 26 10月, 2013 4 次提交
  15. 24 10月, 2013 3 次提交
  16. 22 10月, 2013 5 次提交
  17. 20 10月, 2013 2 次提交