28 Nov, 2014

1 commit

  • Now, with the CLCD DT support available, there is no
    more reason to keep the non-DT support for V2P-CA9.

    Removed, together with "some" supporting code. It was
    necessary to make PLAT_VERSATILE_SCHED_CLOCK optional
    and selected by the machines still interested in it.

    Acked-by: Mike Turquette
    Signed-off-by: Pawel Moll
    Signed-off-by: Arnd Bergmann

    Pawel Moll
     

16 May, 2014

3 commits

  • The last reason for static memory mapping is the HBI (board
    identification number) check early in the machine code.

    Moving the check to the sysreg driver makes it possible to
    completely remove the early mapping and init functions.

    Signed-off-by: Pawel Moll
    Acked-by: Lee Jones

    Pawel Moll
     
  • This patch - finally, after over 6 months! :-( - addresses
    Samuel's request to split the vexpress-sysreg driver into
    smaller portions and define the device in a form of MFD
    cells:

    * LEDs code has been completely removed and replaced with
    "gpio-leds" nodes in the tree (referencing dedicated
    GPIO subnodes in sysreg - bindings documentation updated);
    this also better fits the reality as some variants of the
    motherboard don't have all the LEDs populated

    * syscfg bridge code has been extracted into a separate
    driver (placed in drivers/misc for no better place)

    * all the ID & MISC registers are defined as sysconf
    making them available for other drivers should they need
    to use them (and also to the user via /sys/kernel/debug/regmap
    which can be helpful in platform debugging)

    Signed-off-by: Pawel Moll
    Acked-by: Lee Jones

    Pawel Moll
     
  • Components of the Versatile Express platform (configuration
    microcontrollers on motherboard and daughterboards in particular)
    talk to each other over a custom configuration bus. They
    provide miscellaneous functions (from clock generator control
    to energy sensors) which are represented as platform devices
    (and Device Tree nodes). The transactions on the bus can
    be generated by different "bridges" in the system, some
    of which are universal for the whole platform (for the price
    of high transfer latencies), others restricted to a subsystem
    (but much faster).

    Until now drivers for such functions were using custom "func"
    API, which is being replaced in this patch by regmap calls.
    This required:

    * a rework (and move to drivers/bus directory, as suggested
    by Samuel and Arnd) of the config bus core, which is much
    simpler now and uses device model infrastructure (class)
    to keep track of the bridges; non-DT case (soon to be
    retired anyway) is simply covered by a special device
    registration function

    * the new config-bus driver also takes over device population,
    so there is no need for special matching table for
    of_platform_populate nor "simple-bus" hack in the arm64
    model dtsi file (relevant bindings documentation has
    been updated); this allows all the vexpress devices
    fit into normal device model, making it possible
    to remove plenty of early inits and other hacks in
    the near future

    * adaptation of the syscfg bridge implementation in the
    sysreg driver, again making it much simpler; there is
    a special case of the "energy" function spanning two
    registers, where they should be both defined in the tree
    now, but backward compatibility is maintained in the code

    * modification of the relevant drivers:

    * hwmon - just a straight-forward API change
    * power/reset driver - API change
    * regulator - API change plus error handling
    simplification
    * osc clock driver - this one required larger rework
    in order to turn in into a standard platform driver

    Signed-off-by: Pawel Moll
    Acked-by: Mark Brown
    Acked-by: Lee Jones
    Acked-by: Guenter Roeck
    Acked-by: Mike Turquette

    Pawel Moll
     

10 Jul, 2013

1 commit

  • Preparing to move the parsing of reboot= to generic kernel code forces
    the change in reboot_mode handling to use the enum.

    [akpm@linux-foundation.org: fix arch/arm/mach-socfpga/socfpga.c]
    Signed-off-by: Robin Holt
    Cc: Russell King
    Cc: Russ Anderson
    Cc: Robin Holt
    Cc: H. Peter Anvin
    Cc: Guan Xuetao
    Acked-by: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robin Holt
     

21 Mar, 2013

1 commit


14 Feb, 2013

1 commit

  • The LEDs on the Versatile Express motherboard are controlled
    through simple memory-mapped register. This patch extends
    the pseudo-GPIO controller definition for these lines and
    creates generic "leds-gpio" device using them

    Signed-off-by: Pawel Moll
    Signed-off-by: Samuel Ortiz

    Pawel Moll
     

06 Nov, 2012

3 commits

  • This patch starts using all the configuration infrastructure.

    - generic GPIO library is forced now

    - sysreg GPIOs are used as MMC CD and WP information sources;
    thanks to this MMCI auxiliary data is not longer necessary

    - DVI muxer and mode control is removed from non-DT V2P-CA9 code
    as this is now handled by the vexpress-dvi driver

    - clock generators control is removed as is being handled by the
    common clock driver now

    - the sysreg and sysctl control is now delegated to the
    appropriate drivers and all related code was removed

    - NOR Flash set_vpp function has been removed as the control
    bit used does _not_ control its VPP line, but the #WP signal
    instead (which is de facto unusable in case of Linux MTD
    drivers); this also allowed the remove its DT auxiliary
    data

    The non-DT code defines only minimal required number of
    the config devices. Device Trees are updated to make use
    of all new features.

    Signed-off-by: Pawel Moll

    Pawel Moll
     
  • This is a platform driver for Versatile Express' "system
    register" block. It's a random collection of registers providing
    the following functionality:

    - low level platform functions like board ID access; in order to
    use those, the driver must be initialized early, either statically
    or based on the DT

    - config bus bridge via "system control" interface; as the response
    from the controller does not generate interrupt (yet), the status
    register is periodically polled using a timer

    - pseudo GPIO lines providing MMC card status and Flash WP#
    signal control

    - LED interface for a set of 8 LEDs on the motherboard, with
    "heartbeat", "mmc0" and "cpu0" to "cpu5" as default triggers

    Signed-off-by: Pawel Moll

    Pawel Moll
     
  • Versatile Express platform has an elaborated configuration system,
    consisting of microcontrollers residing on the mother- and
    daughterboards known as Motherboard/Daughterboard Configuration
    Controller (MCC and DCC). The controllers are responsible for
    the platform initialization (reset generation, flash programming,
    FPGA bitfiles loading etc.) but also control clock generators,
    voltage regulators, gather environmental data like temperature,
    power consumption etc. Even the video output switch (FPGA) is
    controlled that way.

    Those devices are _not_ visible in the main address space and
    the usual communication channel uses some kind of a bridge in
    the peripheral block sending commands (requests) to the
    controllers and receiving responses. It can take up to
    500 microseconds for a transaction to be completed, therefore
    it is important to provide a non-blocking interface to it.

    This patch adds an abstraction of this infrastructure. Bridge
    drivers can register themselves with the framework. Then,
    a driver of a device can request an abstract "function" - the
    request will be redirected to a bridge referred by thedd
    "arm,vexpress,config-bridge" property of the device tree node.

    Signed-off-by: Pawel Moll

    Pawel Moll