linux-kernel-test/drivers/pinctrl
Simon Arlott e1b2dc70cd pinctrl: add bcm2835 driver
The BCM2835 GPIO module is a combined GPIO controller, (GPIO) interrupt
controller, and pinmux/control device.

Original driver by Simon Arlott.
Rewrite including GPIO chip device by Chris Boot.

Upstreaming changes by Stephen Warren:
* Wrote DT binding documentation.
* Changed brcm,function to an integer to more directly match the
  datasheet, and to match brcm,pins being an integer.
* Implemented pull-up/down pin config.
* Removed read-only DT property and related code. The restriction this
  implemented are driven by the board, not the GPIO HW block, so don't
  really make sense of a HW block binding, were in general incomplete
  (since they could only know about the few pins hard-coded into the
  Raspberry Pi B board design and not the uncommitted GPIOS), and are
  better represented simply by not writing incorrect data into pin
  configuration nodes.
* Don't set GPIO_IN function select in gpio_request_enable() to avoid
  glitches; defer this to gpio_set_direction(). Consequently, removed
  empty bcm2835_pmx_gpio_request_enable().
* Simplified enabled_irq_map[]; make it explicitly 1 entry per bank.
* Lifted use of enabled_irq_map[] outside the per-interrupt loop in
  IRQ handler, thus fixing an issue where the code was indexing into
  enabled_irq_map[] by intra-bank GPIO ID, not global GPIO ID.
* Removed locking in IRQ handler, since all other code uses
  spin_lock_irqsave() and so guarantees it doesn't run concurrently
  with the handler.
* Moved duplicated BUILD_BUG_ON()s into probe(). Also check size of
  bcm2835_gpio_pins[].
* Remove range-checking from bcm2835_pctl_get_groups_count() since we've
  decided to trust the pinctrl core.
* Made bcm2835_pmx_gpio_disable_free() call bcm2835_pinctrl_fsel_set()
  directly for simplicity.
* Fixed body of dt_free_map() to match latest dt_node_to_map().
* Removed GPIO ownership check from bcm2835_pmx_enable() since the pinctrl
  core owns doing this.
* Made irq_chip and pinctrl_gpio_range .name == MODULE_NAME so it's more
  descriptive.
* Simplified remove(); removed call to non-existent
  pinctrl_remove_gpio_range(), remove early return on error.
* Don't force gpiochip's base to 0. Set gpio_range.base to gpiochip's
  base GPIO number.
* Error-handling cleanups in probe().
* Switched to module_platform_driver() rather than open-coding.
* Made pin, group, and function names lower-case.
* s/broadcom/brcm/ in DT property names.
* s/2708/2835/.
* Fixed a couple minor checkpatch warnings, and other minor cleanup.

Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
Signed-off-by: Chris Boot <bootc@bootc.net>
Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2012-10-01 08:05:22 +02:00
..
spear pinctrl/pinctrl-spear: remove IS_ERR checking of pmx->pctl 2012-07-03 21:51:08 +02:00
core.c pinctrl: Fix potential memory leak in pinctrl_register_one_pin() 2012-09-27 13:43:14 +02:00
core.h pinctrl: show pin name for pingroups in sysfs 2012-04-18 13:53:13 +02:00
devicetree.c pinctrl: implement pinctrl deferred probing 2012-04-18 13:53:11 +02:00
devicetree.h pinctrl: core device tree mapping table parsing support 2012-04-18 13:53:10 +02:00
Kconfig pinctrl: add bcm2835 driver 2012-10-01 08:05:22 +02:00
Makefile pinctrl: add bcm2835 driver 2012-10-01 08:05:22 +02:00
pinconf-generic.c pinctrl: introduce generic pin config 2012-03-12 22:49:02 +01:00
pinconf.c pinctrl: a minor error checking improvement for pinconf 2012-05-15 09:43:18 +02:00
pinconf.h pinctrl: pinconf: fix compilation error if PINCONF is not selected 2012-04-18 13:53:12 +02:00
pinctrl-bcm2835.c pinctrl: add bcm2835 driver 2012-10-01 08:05:22 +02:00
pinctrl-coh901.c pinctrl/coh901: use clk_prepare_[en|dis]able() 2012-07-03 21:51:08 +02:00
pinctrl-coh901.h pinctrl: support pinconfig on the U300 2012-03-12 22:49:03 +01:00
pinctrl-imx6q.c pinctrl: pinctrl-imx6q: add missed mux function for USBOTG_ID 2012-07-14 22:32:10 +02:00
pinctrl-imx23.c pinctrl: mxs: register driver at postcore_initcall time 2012-08-05 00:24:15 +02:00
pinctrl-imx28.c pinctrl: mxs: register driver at postcore_initcall time 2012-08-05 00:24:15 +02:00
pinctrl-imx35.c pinctrl: pinctrl-imx: add imx35 pinctrl driver 2012-09-03 13:21:37 +02:00
pinctrl-imx51.c pinctrl: imx5: start numbering pad from 0 2012-09-03 13:21:37 +02:00
pinctrl-imx53.c pinctrl: imx5: start numbering pad from 0 2012-09-03 13:21:37 +02:00
pinctrl-imx.c pinctrl: imx: remove duplicated const 2012-09-18 15:19:13 +02:00
pinctrl-imx.h pinctrl: pinctrl-imx: add imx pinctrl core driver 2012-05-02 01:14:40 +02:00
pinctrl-mmp2.c pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-mxs.c pinctrl: mxs: Use kfree to fix build error 2012-06-17 19:44:44 +02:00
pinctrl-mxs.h pinctrl: add pinctrl-mxs support 2012-05-02 01:18:27 +02:00
pinctrl-nomadik-db8500.c pinctrl/nomadik : add MC1_a_2 pin MC1 function group list 2012-09-10 10:29:35 +02:00
pinctrl-nomadik-db8540.c pinctrl/nomadik: add ASIC DB8450 pinctrl driver 2012-09-03 13:21:37 +02:00
pinctrl-nomadik-stn8815.c pinctrl/nomadik: add STn8815 ASIC support 2012-09-03 13:21:37 +02:00
pinctrl-nomadik.c pinctrl/nomadik: use irq_find_mapping() 2012-09-28 09:31:26 +02:00
pinctrl-nomadik.h pinctrl/nomadik: add STn8815 ASIC support 2012-09-03 13:21:37 +02:00
pinctrl-pxa3xx.c pinctrl: pinctrl-pxa3xx: remove empty pinmux disable function 2012-05-15 09:59:50 +02:00
pinctrl-pxa3xx.h pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-pxa168.c pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-pxa910.c pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-single.c pinctrl: pinctrl-single: add debugfs pin h/w state info 2012-09-28 09:12:53 +02:00
pinctrl-sirf.c pinctrl: sirf: add lost chained_irq_enter and exit in sirfsoc_gpio_handle_irq 2012-09-28 09:27:36 +02:00
pinctrl-tegra20.c pinctrl: tegra: refactor probe handling 2012-04-18 10:26:40 -06:00
pinctrl-tegra30.c pinctrl: tegra: refactor probe handling 2012-04-18 10:26:40 -06:00
pinctrl-tegra.c pinctrl/pinctrl-tegra: remove IS_ERR checking of pmx->pctl 2012-07-03 21:51:08 +02:00
pinctrl-tegra.h pinctrl: tegra: refactor probe handling 2012-04-18 10:26:40 -06:00
pinctrl-u300.c pinctrl/pinctrl-u300: remove unneeded devm_kfree call 2012-08-05 00:24:15 +02:00
pinmux.c pinctrl: use kasprintf() in pinmux_request_gpio() 2012-09-14 15:53:13 +02:00
pinmux.h pinctrl: ifdef CONFIG_DEBUG_FS cleanup 2012-04-18 13:53:12 +02:00