30 Nov, 2011

2 commits

  • dvfs.h is required by omap cpufreq driver that
    lives in drivers folder, so move it to plat/
    directory. Also move voltage.h, vc.h & vp.h
    similarly to have clean header file inclusions

    Signed-off-by: Afzal Mohammed

    Afzal Mohammed
     
  • There could be dependencies between various voltage domains for
    maintaining system performance or hardware limitation reasons
    like VDD should be at voltage v1 when VDD is at voltage v2.
    This patch introduce dependent vdd information structures in the
    voltage layer which can be used to populate these dependencies
    for a voltage domain.

    Based on original patch from Thara.

    NOTE: OMAP4460 dependency table is not frozen yet, hence not added.

    [nm@ti.com: cleanups and squash for OMAP3,4 data]
    Signed-off-by: Vishwanath BS
    Cc: Thara Gopinath
    [vaibhav.bedia@ti.com: Pull in for AM33xx]
    Signed-off-by: Vaibhav Bedia

    Vishwanath BS
     

16 Sep, 2011

13 commits

  • Remove last remaining member (volt_data) from omap_vdd_info into
    struct voltagedomain and removal remaining usage and reference to
    omap_vdd_info.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • Add sys clock name and rate to struct voltage domain. SoC specific
    voltagedomain init code initializes sys clock name. After clock
    framework is initialized, voltage late init will then use use the
    sys_clk rate to calculate the various timing that depend on that rate.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • - move VP instance struct from vdd_info into struct voltage domain
    - remove _data suffix from structure name
    - rename vp_ prefix from vp_common field: accesses are now vp->common
    - move vp_enabled bool from vdd_info into VP instance
    - remove remaining references to omap_vdd_info

    No functional changes.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • - add setup_time field to struct omap_vc_channel (init'd from PMIC data)
    - use VC/VP register access helper for read/modify/write
    - move VFSM structure from omap_vdd_info into struct voltagedomain
    - remove redunant _data suffix from VFSM structures and variables
    - remove voltsetup_shift, use ffs() on the mask value to find the shift

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • Convert VC/VP register access to use PRM VC/VP accessor functions. In
    the process, move the read/write function pointers from vdd_info into
    struct voltagedomain.

    No functional changes.

    Additional cleanup:
    - remove prm_mod field from VC/VP data structures, the PRM register
    access functions know which PRM module to use.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • Replace the VP tranxdone check/clear with helper functions from the
    PRM layer.

    In the process, remove prm_irqst_* voltage structure fields for IRQ
    status checking which are no longer needed.

    Since these reads/writes of the IRQ status bits were the only PRM
    accesses that were not to VC/VP registers, this allows the rest of the
    register accesses in the VC/VP code to use VC/VP specific register
    access functions (done in the following patch.)

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • Move the VC instance struct from omap_vdd_info into struct voltagedomain.
    While moving, perform some misc. renames for readability.

    No functional changes.

    Summary of renames:
    - rename omap_vc_instance to omap_vc_channel, since there is only
    one instance of the VC IP and this actually represents channels
    using TRM terminology.
    - rename 'vc_common' field of VC channel which led to:
    s/vc->vc_common/vc->common/
    - remove redundant '_data' suffix
    - OMAP3: vc1 --> vc_mpu, vc2 --> vc_core
    - omap_vc_bypass_scale_voltage() -> omap_vc_bypass_scale()

    Signed-off-by: Kevin Hilman

    merge

    Kevin Hilman
     
  • Add a 'bool scalable' flag to the struct powerdomain and set it for
    the scalable domains on OMAP3 and OMAP4.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • Add wakeup voltage domain so that the wakeup powerdomain can have an
    associated powerdomain. Note that the scalable flat is not set for
    the this voltagedomain, so it will not be fully initialized like
    scalable voltage domains.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • This voltage domain (a.k.a. VDD1) contains both the MPU and the IVA, so
    rename appropriately.

    Also fixup any users of the "mpu" name to use "mpu_iva"

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • Start cleaning up the voltage layer to have a voltage domain layer
    that resembles the structure of the existing clock and power domain
    layers. To that end:

    - move the 'struct voltagedomain' out of 'struct omap_vdd_info' to
    become the primary data structure.

    - convert any functions taking a pointer to struct omap_vdd_info into
    functions taking a struct voltagedomain pointer.

    - convert the register & initialize of voltage domains to look like
    that of powerdomains

    - convert omap_voltage_domain_lookup() to voltdm_lookup(), modeled
    after the current powerdomain and clockdomain lookup functions.

    - omap_voltage_late_init(): only configure VDD info when
    the vdd_info struct is non-NULL

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • The prm_irqst_reg is not part of the VP. Move it up into the common
    voltage domain struct.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     
  • Eliminate need for global variables for the various PRM module offsets by
    making them part of the VP/VC common structures

    Eventually, these will likely be moved again, or more likely removed
    when VP/VC code is isolated, but for now just getting rid of them as
    global variabes so that the voltage domain initialization can be
    cleaned up.

    Signed-off-by: Kevin Hilman

    Kevin Hilman
     

11 Mar, 2011

1 commit

  • This is a first pass at reorganizing mach-omap2/voltage.c:

    - Separate almost all of the data from the code of mach-omap2/voltage.c.
    The code remains in mach-omap2/voltage.c. The data goes into one
    of several places, depending on what type of data it is:

    - Silicon process/validation data: mach-omap2/opp*_data.c
    - VC (Voltage Controller) data: mach-omap2/vc*_data.c
    - VP (Voltage Processor) data: mach-omap2/vp*_data.c
    - Voltage domain data: mach-omap2/voltagedomains*_data.c

    The ultimate goal is for all this data to be autogenerated, the same
    way we autogenerate the rest of our data.

    - Separate VC and VP common data from VDD-specific VC and VP data.

    - Separate common voltage.c code from SoC-specific code; reuse common code.

    - Reorganize structures to avoid unnecessary memory loss due to unpacked
    fields.

    There is much left to be done. VC code and VP code should be separated out
    into vc*.c and vp*.c files. Many fields in the existing structures are
    superfluous, and should be removed. Some code in voltage.c seems to be
    duplicated; that code should be moved into functions of its own. Proper
    voltage domain code should be created, as was done with the powerdomain
    and clockdomains, and powerdomains should reference voltagedomains.

    Thanks to Shweta Gulati for comments. Thanks
    to Rajendra Nayak for finding and fixing some bugs
    that prevented OMAP4 from booting:

    https://patchwork.kernel.org/patch/587311/

    His patch has been folded into this one to avoid breaking OMAP4
    between patches. Thanks also to Kevin Hilman for
    finding and fixing a compile problem when !CONFIG_PM:

    http://www.spinics.net/lists/arm-kernel/msg118067.html

    His patch has also been folded into this one to avoid breaking
    !CONFIG_PM builds.

    Signed-off-by: Paul Walmsley
    Cc: Shweta Gulati
    Cc: Rajendra Nayak
    Cc: Kevin Hilman

    Paul Walmsley