11 Feb, 2014

1 commit


08 Oct, 2013

1 commit

  • The data structure of_match_ptr() protects is always compiled in.
    Hence of_match_ptr() is not needed.

    This is a squash commit of:
    pinctrl: at91: Remove redundant of_match_ptr
    pinctrl: exynos5440: Remove redundant of_match_ptr
    pinctrl: imx35: Remove redundant of_match_ptr
    pinctrl: imx51: Remove redundant of_match_ptr
    pinctrl: imx53: Remove redundant of_match_ptr
    pinctrl: imx6dl: Remove redundant of_match_ptr
    pinctrl: imx6q: Remove redundant of_match_ptr
    pinctrl: samsung: Remove redundant of_match_ptr
    pinctrl: vf610: Remove redundant of_match_ptr
    pinctrl: imx6sl: Remove redundant of_match_ptr
    pinctrl: plgpio: Remove redundant of_match_ptr

    Acked-by: Viresh Kumar
    Signed-off-by: Sachin Kamat
    Signed-off-by: Linus Walleij

    Sachin Kamat
     

28 Aug, 2013

2 commits

  • This patch implements pinctrl support and adds device tree bindings
    for s5pv210.

    Signed-off-by: Mateusz Krawczuk
    Acked-by: Sylwester Nawrocki
    Signed-off-by: Linus Walleij

    Mateusz Krawczuk
     
  • When setting pin configuration in the pinctrl framework, pin_config_set() or
    pin_config_group_set() is called in a loop to set one configuration at a time
    for the specified pin or group.

    This patch 1) removes the loop and 2) changes the API to pass the whole pin
    config array to the driver. It is now up to the driver to loop through the
    configs. This allows the driver to potentially combine configs and reduce the
    number of writes to pin config registers.

    All c files changed have been build-tested to verify the change compiles and
    that the corresponding .o is successfully generated.

    Signed-off-by: Sherman Yin
    Reviewed-by: Christian Daudt
    Reviewed-by: Matt Porter
    Tested-by: Stephen Warren
    Acked-by: Laurent Pinchart
    Signed-off-by: Linus Walleij

    Sherman Yin
     

23 Aug, 2013

1 commit

  • Calling pinctrl_register() means that the driver is fully initialized
    and might accept pinmux/pinconf requests, so pin groups must be parsed
    before.

    This patch fixes this problem by moving device tree parsing before call
    to pinctrl_register(). In addition, this fixes support for hogs on
    pin controllers handled by pinctrl-samsung driver.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Kyungmin Park
    Signed-off-by: Linus Walleij

    Tomasz Figa
     

04 Jul, 2013

1 commit

  • …/linusw/linux-pinctrl

    Pull pin control changes from Linus Walleij:

    - A large slew of improvements of the Genric pin configuration support,
    and deployment in four different platforms: Rockchip, Super-H PFC,
    ABx500 and TZ1090. Support BIAS_BUS_HOLD, get device tree parsing
    and debugfs support into shape.

    - We also have device tree support with generic naming conventions for
    the generic pin configuration.

    - Delete the unused and confusing direct pinconf API. Now state
    transitions is *the* way to control pins and multiplexing.

    - New drivers for Rockchip, TZ1090, and TZ1090 PDC.

    - Two pin control states related to power management are now handled in
    the device core: "sleep" and "idle", removing a lot of boilerplate
    code in drivers. We do not yet know if this is the final word for
    pin PM, but it already make things a lot easier to handle.

    - Handle sparse GPIO ranges passing a list of disparate pins, and
    utilize these in the new BayTrail (x86 Atom SoC) driver.

    - Make the sunxi (AllWinner) driver handle external interrupts.

    - Make it possible for pinctrl-single to handle the case where several
    pins are managed by a single register, and augment it to handle sleep
    modes.

    - Cleanups and improvements for the abx500 drivers.

    - Move Sirf pin control drivers to their own directory, support
    save/restore of context and add support for the SiRFatlas6 SoC.

    - PMU muxing for the Dove pinctrl driver.

    - Finalization and support for VF610 in the i.MX6 pinctrl driver.

    - Smoothen out various Exynos rough edges.

    - Generic cleanups of various kinds.

    * tag 'pinctrl-for-v3.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (82 commits)
    pinctrl: vt8500: wmt: remove redundant dev_err call in wmt_pinctrl_probe()
    pinctrl: remove bindings for pinconf options needing more thought
    pinctrl: remove slew-rate parameter from tz1090
    pinctrl: set unit for debounce time pinconfig to usec
    pinctrl: more clarifications for generic pull configs
    pinctrl: rip out the direct pinconf API
    pinctrl-tz1090-pdc: add TZ1090 PDC pinctrl driver
    pinctrl-tz1090: add TZ1090 pinctrl driver
    pinctrl: samsung: Staticize drvdata_list
    pinctrl: rockchip: Add missing irq_gc_unlock() call before return error
    pinctrl: abx500: rework error path
    pinctrl: abx500: suppress hardcoded value
    pinctrl: abx500: factorize code
    pinctrl: abx500: fix abx500_gpio_get()
    pinctrl: abx500: fix abx500_pin_config_set()
    pinctrl: abx500: Add device tree support
    sh-pfc: Guard DT parsing with #ifdef CONFIG_OF
    pinctrl: add Intel BayTrail GPIO/pinctrl support
    pinctrl: fix pinconf_ops::pin_config_dbg_parse_modify kerneldoc
    pinctrl: Staticize local symbols
    ...

    Conflicts:
    drivers/net/ethernet/ti/davinci_mdio.c
    drivers/pinctrl/Makefile

    Linus Torvalds
     

03 Jul, 2013

1 commit

  • Pull ARM SoC late changes from Arnd Bergmann:
    "These are changes that arrived a little late before the merge window
    or that have multiple dependencies on previous branches so they did
    not fit into one of the earlier ones. There are 10 branches merged
    here, a total of 39 non-merge commits. Contents are a mixed bag for
    the above reasons:

    * Two new SoC platforms: ST microelectronics stixxxx and the TI
    'Nspire' graphing calculator. These should have been in the 'soc'
    branch but were a little late
    * Support for the Exynos 5420 variant in mach-exynos, which is based
    on the other exynos branches to avoid conflicts.
    * Various small changes for sh-mobile, ux500 and davinci
    * Common clk support for MSM"

    * tag 'late-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (39 commits)
    ARM: ux500: bail out on alien cpus
    ARM: davinci: da850: adopt to pinctrl-single change for configuring multiple pins
    serial: sh-sci: Initialise variables before access in sci_set_termios()
    ARM: stih41x: Add B2020 board support
    ARM: stih41x: Add B2000 board support
    ARM: sti: Add DEBUG_LL console support
    ARM: sti: Add STiH416 SOC support
    ARM: sti: Add STiH415 SOC support
    ARM: msm: Migrate to common clock framework
    ARM: msm: Make proc_comm clock control into a platform driver
    ARM: msm: Prepare clk_get() users in mach-msm for clock-pcom driver
    ARM: msm: Remove clock-7x30.h include file
    ARM: msm: Remove custom clk_set_{max,min}_rate() API
    ARM: msm: Remove custom clk_set_flags() API
    msm: iommu: Use clk_set_rate() instead of clk_set_min_rate()
    msm: iommu: Convert to clk_prepare/unprepare
    msm_sdcc: Convert to clk_prepare/unprepare
    usb: otg: msm: Convert to clk_prepare/unprepare
    msm_serial: Use devm_clk_get() and properly return errors
    msm_serial: Convert to clk_prepare/unprepare
    ...

    Linus Torvalds
     

24 Jun, 2013

1 commit


19 Jun, 2013

1 commit


12 Jun, 2013

1 commit


27 May, 2013

2 commits

  • SoC-specific driver might require additional save and restore of
    registers. This patch adds pair of SoC-specific callbacks per pinctrl
    device to account for this.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Kyungmin Park
    Tested-by: Doug Anderson
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • The GPIO states need to be restored after s2r and this is not currently
    supported in the pinctrl driver. This patch saves the gpio states before
    suspend and restores them after resume.

    Saving and restoring is done very early using syscore_ops and must
    happen before pins are released from their powerdown state.

    Patch originally from Prathyush K but
    rewritten by Doug Anderson .

    Signed-off-by: Prathyush K
    Signed-off-by: Doug Anderson
    Tested-by: Tomasz Figa
    Acked-by: Kukjin Kim
    Signed-off-by: Linus Walleij

    Doug Anderson
     

20 May, 2013

1 commit

  • The s3c24xx pins follow a similar pattern as the other Samsung SoCs and
    can therefore reuse the already introduced infrastructure.

    The s3c24xx SoCs have one design oddity in that the first 4 external
    interrupts do not reside in the eint pending register but in the main
    interrupt controller instead. We solve this by forwarding the external
    interrupt from the main controller into the irq domain of the pin bank.
    The masking/acking of these interrupts is handled in the same way.

    Furthermore the S3C2412/2413 SoCs contain another oddity in that they
    keep the same 4 eints in the main interrupt controller and eintpend
    register and requiring ack operations to happen in both. This is solved
    by using different compatible properties for the wakeup eint node which
    set a property accordingly.

    Signed-off-by: Heiko Stuebner
    Reviewed-by: Tomasz Figa
    Reviewed-by: Sylwester Nawrocki
    Acked-by: Linus Walleij
    Signed-off-by: Kukjin Kim

    Heiko Stuebner
     

18 May, 2013

1 commit


05 May, 2013

1 commit

  • Pull ARM SoC driver changes from Olof Johansson:
    "This is a rather large set of patches for device drivers that for one
    reason or another the subsystem maintainer preferred to get merged
    through the arm-soc tree. There are both new drivers as well as
    existing drivers that are getting converted from platform-specific
    code into standalone drivers using the appropriate subsystem specific
    interfaces.

    In particular, we can now have pinctrl, clk, clksource and irqchip
    drivers in one file per driver, without the need to call into platform
    specific interface, or to get called from platform specific code, as
    long as all information about the hardware is provided through a
    device tree.

    Most of the drivers we touch this time are for clocksource. Since now
    most of them are part of drivers/clocksource, I expect that we won't
    have to touch these again from arm-soc and can let the clocksource
    maintainers take care of these in the future.

    Another larger part of this series is specific to the exynos platform,
    which is seeing some significant effort in upstreaming and
    modernization of its device drivers this time around, which
    unfortunately is also the cause for the churn and a lot of the merge
    conflicts.

    There is one new subsystem that gets merged as part of this series:
    the reset controller interface, which is a very simple interface for
    taking devices on the SoC out of reset or back into reset. Patches to
    use this interface on i.MX follow later in this merge window, and we
    are going to have other platforms (at least tegra and sirf) get
    converted in 3.11. This will let us get rid of platform specific
    callbacks in a number of platform independent device drivers."

    * tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (256 commits)
    irqchip: s3c24xx: add missing __init annotations
    ARM: dts: Disable the RTC by default on exynos5
    clk: exynos5250: Fix parent clock for sclk_mmc{0,1,2,3}
    ARM: exynos: restore mach/regs-clock.h for exynos5
    clocksource: exynos_mct: fix build error on non-DT
    pinctrl: vt8500: wmt: Fix checking return value of pinctrl_register()
    irqchip: vt8500: Convert arch-vt8500 to new irqchip infrastructure
    reset: NULL deref on allocation failure
    reset: Add reset controller API
    dt: describe base reset signal binding
    ARM: EXYNOS: Add arm-pmu DT binding for exynos421x
    ARM: EXYNOS: Add arm-pmu DT binding for exynos5250
    ARM: EXYNOS: Enable PMUs for exynos4
    irqchip: exynos-combiner: Correct combined IRQs for exynos4
    irqchip: exynos-combiner: Add set_irq_affinity function for combiner_irq
    ARM: EXYNOS: fix compilation error introduced due to common clock migration
    clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3}
    clk: exynos4: export clocks required for fimc-is
    clk: samsung: Fix compilation error
    clk: tegra: fix enum tegra114_clk to match binding
    ...

    Linus Torvalds
     

09 Apr, 2013

6 commits

  • This patch adds pinctrl-s3c64xx driver which implements pin control
    interface for Samsung S3C64xx SoCs.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • This patch adds support for banks that have more than one function
    configuration registers, e.g. some of the banks of S3C64xx SoCs.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • This patch replaces statically hardcoded register offsets of Exynos SoCs
    with an array of register offsets in samsung_pin_bank_type struct.

    Thanks to this change, support for SoCs with other set and order of
    registers can be added (e.g. S3C24xx and S3C64xx).

    Signed-off-by: Tomasz Figa
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • This patch splits pin bank description into two structures, one
    describing bank type (currently only bitfield widths), which can be
    shared across multiple banks and second containing bank-specific
    parameters including a pointer to a bank type struct.

    It is a prerequisite for further patch removing the statically hardcoded
    register offsets, making it impossible to support SoCs with different
    set and order of pin control registers.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • Since pinctrl-samsung is a common part of the pin control support for
    several Samsung SoCs, it can be compiled without Exynos support enabled.

    This patch surrounds Exynos-specific driver data with ifdefs to include
    them only when support for Exynos is enabled.

    Signed-off-by: Tomasz Figa
    [Fixed up EXYNOS4->EXYNOS]
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • Certain pin control registers can be accessed from different contexts,
    i.e. pinctrl, gpio and irq functions. This makes the locking provided by
    pin control core insufficient.

    This patch adds necessary locking using a per bank spinlock as it was
    done in the old Samsung GPIO driver.

    Signed-off-by: Tomasz Figa
    Signed-off-by: Linus Walleij

    Tomasz Figa
     

07 Mar, 2013

1 commit


05 Mar, 2013

1 commit


22 Feb, 2013

2 commits

  • Pull non-critical ARM SoC bug fixes from Arnd Bergmann:
    "Bug fixes that did not make it into v3.8, mostly because they were not
    considered important enough, and in some cases because bugs only show
    up in combination with other patches destined for 3.9. This includes
    a few larger patches for GPIO on the Marvell PXA platform and a lot of
    Samsung specific bug fixes, as well as a series from Arnd to fix older
    build warnings."

    * tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (54 commits)
    ARM: SPEAr13xx: Enable CONFIG_ARCH_HAS_CPUFREQ
    ARM: imx: MACH_MX31ADS_WM1133_EV1 needs REGULATOR_WM8350
    scripts/sortextable: silence script output
    ARM: s3c: i2c: add platform_device forward declaration
    ARM: mvebu: allow selecting mvebu without Armada XP
    ARM: pick Versatile by default for !MMU
    ARM: integrator: fix build with INTEGRATOR_AP off
    ARM: integrator/versatile: fix NOMMU warnings
    ARM: sa1100: don't warn about mach/ide.h
    ARM: shmobile: fix defconfig warning on CONFIG_USB
    ARM: w90x900: fix legacy assembly syntax
    ARM: samsung: fix assembly syntax for new gas
    ARM: disable virt_to_bus/virt_to_bus almost everywhere
    ARM: dts: Correct pin configuration of SD 4 for exynos4x12-pinctrl
    ARM: SAMSUNG: Silence empty switch warning in fimc-core.h
    ARM: SAMSUNG: Silence empty switch warning in sdhci.h
    ARM: msm: proc_comm_boot_wait should not be __init
    arm: vt8500: Update MAINTAINERS entry for arch-vt8500
    ARM: integrator: ensure ap_syscon_base is initialised when !CONFIG_MMU
    ARM: S5PV210: Fix early uart output in fifo mode
    ...

    Linus Torvalds
     
  • Pull driver core patches from Greg Kroah-Hartman:
    "Here is the big driver core merge for 3.9-rc1

    There are two major series here, both of which touch lots of drivers
    all over the kernel, and will cause you some merge conflicts:

    - add a new function called devm_ioremap_resource() to properly be
    able to check return values.

    - remove CONFIG_EXPERIMENTAL

    Other than those patches, there's not much here, some minor fixes and
    updates"

    Fix up trivial conflicts

    * tag 'driver-core-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (221 commits)
    base: memory: fix soft/hard_offline_page permissions
    drivercore: Fix ordering between deferred_probe and exiting initcalls
    backlight: fix class_find_device() arguments
    TTY: mark tty_get_device call with the proper const values
    driver-core: constify data for class_find_device()
    firmware: Ignore abort check when no user-helper is used
    firmware: Reduce ifdef CONFIG_FW_LOADER_USER_HELPER
    firmware: Make user-mode helper optional
    firmware: Refactoring for splitting user-mode helper code
    Driver core: treat unregistered bus_types as having no devices
    watchdog: Convert to devm_ioremap_resource()
    thermal: Convert to devm_ioremap_resource()
    spi: Convert to devm_ioremap_resource()
    power: Convert to devm_ioremap_resource()
    mtd: Convert to devm_ioremap_resource()
    mmc: Convert to devm_ioremap_resource()
    mfd: Convert to devm_ioremap_resource()
    media: Convert to devm_ioremap_resource()
    iommu: Convert to devm_ioremap_resource()
    drm: Convert to devm_ioremap_resource()
    ...

    Linus Torvalds
     

11 Feb, 2013

1 commit


29 Jan, 2013

1 commit


23 Jan, 2013

1 commit

  • Convert all uses of devm_request_and_ioremap() to the newly introduced
    devm_ioremap_resource() which provides more consistent error handling.

    devm_ioremap_resource() provides its own error messages so all explicit
    error messages can be removed from the failure code paths.

    Signed-off-by: Thierry Reding
    Cc: Linus Walleij
    Acked-by: Viresh Kumar
    Signed-off-by: Greg Kroah-Hartman

    Thierry Reding
     

04 Jan, 2013

1 commit

  • CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
    markings need to be removed.

    This change removes the use of __devinit, __devexit_p, __devinitdata,
    and __devexit from these drivers.

    Based on patches originally written by Bill Pemberton, but redone by me
    in order to handle some of the coding style issues better, by hand.

    Cc: Bill Pemberton
    Cc: Linus Walleij
    Cc: Jean-Christophe Plagniol-Villard
    Cc: Stephen Warren
    Cc: Srinidhi Kasagar
    Cc: Barry Song
    Cc: Viresh Kumar
    Cc: Thomas Petazzoni
    Cc: Jason Cooper
    Cc: Sebastian Hesselbarth
    Cc: Andrew Lunn
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

19 Dec, 2012

1 commit

  • I got below build error with random config if CONFIG_PINCTRL_SAMSUNG=y &&
    CONFIG_PINCTRL_EXYNOS5440=y.

    Fix the build error by making pcfgs static.

    LD drivers/pinctrl/built-in.o
    drivers/pinctrl/pinctrl-exynos5440.o: In function `.LANCHOR0':
    pinctrl-exynos5440.c:(.data+0x54): multiple definition of `pcfgs'
    drivers/pinctrl/pinctrl-samsung.o:pinctrl-samsung.c:(.data+0x54): first defined here
    make[2]: *** [drivers/pinctrl/built-in.o] Error 1
    make[1]: *** [drivers/pinctrl] Error 2
    make: *** [drivers] Error 2

    Signed-off-by: Axel Lin
    Acked-by: Linus Walleij
    Acked-by: Thomas Abraham
    Signed-off-by: Kukjin Kim

    Axel Lin
     

24 Nov, 2012

1 commit

  • Static variables are initialised to 0 by GCC.
    Fixes the following checkpatch error:
    ERROR: do not initialise statics to 0 or NULL
    FILE: pinctrl/pinctrl-samsung.c:50:
    static unsigned int pin_base = 0;

    Signed-off-by: Sachin Kamat
    Acked-by: Linus Walleij
    Signed-off-by: Kukjin Kim

    Sachin Kamat
     

19 Nov, 2012

3 commits


15 Oct, 2012

6 commits

  • Some drivers require a way to translate GPIO pins to their IRQ numbers.

    This patch adds the .to_irq() gpiolib callback to pinctrl-samsung
    driver, which creates (if not present yet) and returns an IRQ mapping
    for given GPIO pin.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Kyungmin Park
    Acked-by: Thomas Abraham
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • This patch modifies the pinctrl-samsung driver to register one GPIO chip
    per pin bank, instead of a single chip for all pin banks of the
    controller.

    It simplifies GPIO accesses a lot (constant time instead of looping
    through the list of banks to find the right one) and should have a good
    effect on performance of any bit-banging driver.

    In addition it allows to reference GPIO pins by a phandle to the bank
    node and a local pin offset inside of the bank (similar to previous
    gpiolib driver), which is more clear and readable than using indices
    relative to the whole pin controller.

    Example:
    device {
    /* ... */
    gpios = ;
    /* ... */
    };

    Signed-off-by: Tomasz Figa
    Reviewed-by: Kyungmin Park
    Acked-by: Thomas Abraham
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • Instead of registering one IRQ domain for all pin banks of a pin
    controller, this patch implements registration of per-bank domains.

    At a cost of a little memory overhead (~2.5KiB for all GPIO interrupts
    of Exynos4x12) it simplifies driver code and device tree sources,
    because GPIO interrupts can be now specified per banks.

    Example:
    device {
    /* ... */
    interrupt-parent = ;
    interrupts = ;
    /* ... */
    };

    Signed-off-by: Tomasz Figa
    Reviewed-by: Kyungmin Park
    Acked-by: Thomas Abraham
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • This patch is a preparation for converting the pinctrl-samsung driver to
    one GPIO chip and IRQ domain per bank. It allows one having only
    a pointer to particular bank struct to access driver data struct.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Kyungmin Park
    Acked-by: Thomas Abraham
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • This patch is a preparation for converting the pinctrl-samsung driver to
    one GPIO chip and IRQ domain per bank. It binds banks defined by
    internal driver data with bank nodes in device tree.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Kyungmin Park
    Acked-by: Thomas Abraham
    Signed-off-by: Linus Walleij

    Tomasz Figa
     
  • This patch modifies the loop iterating over all child nodes and parsing
    pin groups to check whether the node is really a pin group node by
    checking for existence of samsung,pins property.

    This is a prerequisite for further patches adding additional subnodes to
    the pinctrl node, required for per bank GPIO and interrupt specifiers.

    Signed-off-by: Tomasz Figa
    Reviewed-by: Kyungmin Park
    Acked-by: Thomas Abraham
    Signed-off-by: Linus Walleij

    Tomasz Figa