1. 03 Sep, 2009 10 commits
    • Paul Walmsley's avatar
      OMAP: omap_hwmod: call omap_hwmod init at boot; create interconnects · 02bfc030
      Paul Walmsley authored
      Connect the omap_hwmod code to the kernel boot.  Create some basic
      interconnect and device structures for OMAP2/3 chips.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      02bfc030
    • Paul Walmsley's avatar
      OMAP2/3/4: create omap_hwmod layer · 63c85238
      Paul Walmsley authored
      OMAP SoCs can be considered a collection of hardware IP blocks
      connected by various interconnects.  The bus topology and device
      integration data is somewhat more complex than platform_device can
      encode.  This patch creates code and structures to manage information
      about OMAP on-chip devices ("hardware modules") and their integration
      to the rest of the chip.  Hardware module data is intended to be
      generated dynamically from the TI hardware database for the OMAP4
      chips and beyond, easing Linux support for new chip variants.
      
      This code currently:
      
      - resets and configures all hardware modules upon startup, reducing bootloader
        dependencies;
      
      - provides hooks for Linux driver model code to enable, idle, and shutdown
        hardware modules (forthcoming patch);
      
      - waits for hardware modules to leave idle once their clocks
        are enabled and OCP_SYSCONFIG bits are set appropriately.
      
      - provides a means to pass arbitrary IP block configuration data (e.g.,
        FIFO size) to the device driver (via the dev_attr void pointer)
      
      In the future this code is intended to:
      
      - estimate interconnect bandwidth and latency characteristics to
        ensure constraints are satisfied during DVFS
      
      - provide *GRPSEL bit data to the powerdomain code
      
      - handle pin/ball muxing for devices
      
      - generate IO mapping information dynamically
      
      - supply device firewall configuration data
      
      - provide hardware module data to other on-chip coprocessor software
      
      - allow the removal of the "disable unused clocks" code in the OMAP2/3
        clock code
      
      This patch represents a collaborative effort involving many people from TI,
      Nokia, and the Linux-OMAP community.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Cc: Benoit Cousson <b-cousson@ti.com>
      Cc: Kevin Hilman <khilman@deeprootsystems.com>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Rajendra Nayak <rnayak@ti.com>
      Cc: Vikram Pandita <vikram.pandita@ti.com>
      Cc: Sakari Poussa <sakari.poussa@nokia.com>
      Cc: Anand Sawant <sawant@ti.com>
      Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
      Cc: Eric Thomas <ethomas@ti.com>
      Cc: Richard Woodruff <r-woodruff2@ti.com>
      63c85238
    • Paul Walmsley's avatar
      OMAP2/3 board-*.c files: read bootloader configuration earlier · b3c6df3a
      Paul Walmsley authored
      Most board-*.c files read configuration data from the bootloader in
      their .init_machine() function.  This needs to happen earlier, at some
      point before omap2_init_common_hw() is called.  This is because a
      future patch will use the bootloader serial console port information
      to enable the UART clocks earlier, immediately after omap2_clk_init().
      This is in turn necessary since otherwise clock tree usecounts on
      clocks like dpll4_m2x2_ck will be bogus, which can cause the
      currently-active console UART clock to be disabled during boot.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      b3c6df3a
    • Paul Walmsley's avatar
      OMAP2/3/4 PRCM: add module IDLEST wait code · 71348bca
      Paul Walmsley authored
      After a hardware module's clocks are enabled, Linux must wait for it
      to indicate readiness via its IDLEST bit before attempting to access
      the device, otherwise register accesses to the device may trigger an
      abort.  This has traditionally been implemented in the clock
      framework, but this is the wrong place for it: the clock framework
      doesn't know which module clocks must be enabled for a module to leave
      idle; and if a module is not in smart-idle mode, it may never leave
      idle at all.  This type of information is best stored in a
      per-hardware module data structure (coming in a following patch),
      rather than a per-clock data structure.  The new code will use these new
      functions to handle waiting for modules to enable.
      
      Once hardware module data is filled in for all of the on-chip devices,
      the clock framework code to handle IDLEST waiting can be removed.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      71348bca
    • Paul Walmsley's avatar
      OMAP2/3 PM: create the OMAP PM interface and add a default OMAP PM no-op layer · c0407a96
      Paul Walmsley authored
      The interface provides device drivers, CPUFreq, and DSPBridge with a
      means of controlling OMAP power management parameters that are not yet
      supported by the Linux PM PMQoS interface.  Copious documentation is
      in the patch in Documentation/arm/OMAP/omap_pm and the interface
      header file, arch/arm/plat-omap/include/mach/omap-pm.h.
      
      Thanks to Rajendra Nayak <rnayak@ti.com> for adding CORE (VDD2) OPP
      support and moving the OPP table initialization earlier in the event
      that the clock code needs them.  Thanks to Tero Kristo
      <tero.kristo@nokia.com> for fixing the parameter check in
      omap_pm_set_min_bus_tput().  Jouni signed off on Tero's patch.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
      Signed-off-by: default avatarRajendra Nayak <rnayak@ti.com>
      Signed-off-by: default avatarTero Kristo <tero.kristo@nokia.com>
      Signed-off-by: default avatarJouni Högander <jouni.hogander@nokia.com>
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Igor Stoppa <igor.stoppa@nokia.com>
      Cc: Richard Woodruff <r-woodruff2@ti.com>
      Cc: Anand Sawant <sawant@ti.com>
      Cc: Sakari Poussa <sakari.poussa@nokia.com>
      Cc: Veeramanikandan Raju <veera@ti.com>
      Cc: Karthik Dasu <karthik-dp@ti.com>
      c0407a96
    • Paul Walmsley's avatar
      OMAP3 clock: remove superfluous calls to omap2_init_clk_clkdm · 08e3d5f2
      Paul Walmsley authored
      omap2_init_clk_clkdm() is called as part of the chip architecture-specific
      initialization code, so calling it again from the struct clk init pointer
      just wastes cycles.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      08e3d5f2
    • Paul Walmsley's avatar
      OMAP clock: associate MPU clocks with the mpu_clkdm · 19f4d3a9
      Paul Walmsley authored
      All MPU-related clocks should be in the mpu_clkdm.  This is needed for the
      upcoming omap_hwmod patches, which needs to know the clockdomain that arm_fck
      is in.
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      19f4d3a9
    • Sanjeev Premi's avatar
      OMAP3 clock: Fixed processing of bootarg 'mpurate' · 11b66383
      Sanjeev Premi authored
      The argument 'mpurate' had no effect on the MPU
      frequency. This patch fixes the same.
      Signed-off-by: default avatarSanjeev Premi <premi@ti.com>
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      11b66383
    • Tero Kristo's avatar
      OMAP: SDRC: Add several new register definitions · 6dda2d4b
      Tero Kristo authored
      Add missing SDRC register offset macros.
      Signed-off-by: default avatarTero Kristo <tero.kristo@nokia.com>
      Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
      [paul@pwsan.com: added commit message]
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      6dda2d4b
    • Paul Walmsley's avatar
      OMAP: powerdomain: Fix overflow when doing powerdomain deps lookups. · 5d113262
      Paul Walmsley authored
      At the end of the list pd is a pointer to a NULL struct, so checking
      if the address == NULL doesn't help here. In fact the original code
      will just keep running past the struct to read who knows what in
      memory.
      
      This case manifests itself when from clkdms_setup() when enabling auto
      idle for a clock domain and the clockdomain usecount is greater than
      0. When _clkdm_add_autodeps() tries to add the a dependency that does
      not exist in the powerdomain->wkdep_srcs array the for loop will run
      past the wkdep_srcs array.
      
      Currently in linux-omap you won't hit this because the not found case
      is never executed, unless you start modifying powerdomains and their
      wakeup/sleep deps.
      Signed-off-by: default avatarMike Chan <mike@android.com>
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      5d113262
  2. 28 Aug, 2009 22 commits
  3. 27 Aug, 2009 8 commits