09 Jan, 2012

5 commits

  • Add PFC support for a 32-bit unlock register. Needed to
    drive the r8a7779 PFC that comes with a funky PMMR register.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Add support for variable config reg hardware by adding
    the macro PINMUX_CFG_REG_VAR(). The width of each bitfield
    needs to be passed to the macro, and the correct space must
    be consumed by each bitfield in the enum table following the
    macro. Data registers still need to have fixed bitfields.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Add a helper function for shared config reg access
    calculations. This allows us to reduce the amount
    of duplicated code, and at the same time prepare
    for a common place for future variable bitwidth
    config reg support.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Update the way the PFC code is passing bitfield
    selection between configure register functions.

    Convert the code from using index only to bitfield
    number and selected value. First step towards future
    variable bitfield width support.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Introduce gpio_read_bit() for data register read access
    and modify sh_gpio_get_value() to make use of the new
    function instead of gpio_read_reg(). The purpose of
    this change is to update the code to only use the
    gpio_read_reg() function for config register access.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     

09 Dec, 2011

1 commit

  • Add support for non-entity mapped PFC registers through
    the use of struct resource and ioremap()/iounmap().

    The PFC main data structure gets updated with a pointer
    to a struct resources array that point out all register
    windows used by the PFC instance. The register definitions
    are kept as physical addresses but the PFC code will do
    transparent conversion into virtual addresses whenever
    register windows are specified using with struct resource.

    To introduce as little performance penalty as possible the
    virtual address of each data register is cached in memory.
    The virtual address of each configuration register is however
    calculated during run time. This because the configuration
    is considered slow path so focus is instead put on keeping
    memory foot print as small as possible.

    The PFC register access code is in this patch updated from
    __raw_readN() / __raw_writeN() into ioreadN() / iowriteN().

    This patch is needed to support the PFC block in r8a7779.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     

28 Oct, 2011

2 commits

  • Add GPIO IRQ support to the shared PFC code in drivers/sh/pfc.c

    The enums pointed out by a certain GPIO will be matched against
    a table for IRQ to enum mappings.

    Only the shared PFC code is updated by this patch. SoC specific
    changes are also needed to allow platforms to make use of this
    feature.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Clean up the f_width shift code in get_config_reg().

    Reported-by: Ryusuke Sakato
    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     

04 Oct, 2010

2 commits

  • The gpiolib debugfs entry takes a hammer approach and iterates over all
    of the potential GPIOs, regardless of their type. The SH PFC code on the
    other hand contains a variable mismash of input/output/function types
    spread out sparsely, leading to situations where the debug code can
    trigger an out of range enum for the type. Since we already have an error
    path for out of range enums, we can just hand that up to the higher level
    instead of the current BUG() behaviour.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • Presently the pinmux code is a one-way thing, but there's nothing
    preventing an unregistration if no one has grabbed any of the pins.
    This will permit us to save a bit of memory on systems that require pin
    demux for certain peripherals in the case where registration of those
    peripherals fails, or they are otherwise not attached to the system.

    Signed-off-by: Paul Mundt

    Paul Mundt
     

20 Jan, 2010

1 commit

  • This patch updates the PFC code with some clarifying
    comments together with a functional change. The change
    allows function type of GPIO to select any type of enum
    in their MARK lists. Without this patch only function
    type of enums are allowed in MARK lists.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     

09 Dec, 2009

1 commit


30 Nov, 2009

3 commits

  • For some reason this was using pr_info() nested under an ifdef DEBUG.
    While this is appealing in that it circumvents the effort necessary to
    change ones loglevel, it's not terribly practical. So, convert it over
    to pr_debug().

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • Now that the PFC code is exposed for other architectures, use the common
    __raw_xxx() routines instead of the ctrl_xxx() ones. This will be needed
    for ARM-based SH-Mobiles amongst others.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • This file breaks out the SuperH PFC code from
    arch/sh/kernel/gpio.c + arch/sh/include/asm/gpio.h
    to drivers/sh/pfc.c + include/linux/sh_pfc.h.

    Similar to the INTC stuff. The non-SuperH specific
    file location makes it possible to share the code
    between multiple architectures.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm