User: Password:
Subscribe / Log in / New account

pinctrl: API change, config in mapping table

From:  Stephen Warren <>
To:  Linus Walleij <>
Subject:  [PATCH 00/20] pinctrl: API change, config in mapping table
Date:  Sun, 19 Feb 2012 23:45:40 -0700
Message-ID:  <>
Cc:,,,,,,, Stephen Warren <>
Archive-link:  Article

These changes:
* Rework the pinctrl API as we discussed at Linaro Connect.
* Allow specifying pin config settings in the mapping table in addition
  to mux options, as we agreed upon at Linaro Connect.
* Various cleanups and refactorings aimed at supporting the changes above.

TODO in this patch set:
* Test build of non-Tegra platforms.
* Test build with pinmux/pinconf disabled.
... but I figure it was a good idea to send out for comments ASAP.

TODO in future patch sets:
* Implement device tree support in pinctrl core and a pinctrl driver.
* Remove pin config APIs from pinctrl now that the mapping table supports
  pin config?

I've tested this all on a couple Tegra boards, including hacking in a single
pin config and dummy state mapping table entry. I've got patches for Tegra
boards that use the explicit pin config APIs, and need to convert them to
using the pin config mapping table entries for more complete testing.

(In the diffstat below, I /think/ the first 19 patches are a net negative in
line-count, and only the last patch, which implements a new feature, adds a
significant number of lines)

Stephen Warren (20):
  pinctrl: pinctrl_register_mappings() shouldn't be __init
  pinctrl: use list_add_tail instead of list_add
  pinctrl: Store mapping table as a list of chunks
  pinctrl: Record a pin owner, not mux function, when requesting pins
  pinctrl: Re-order pinmux.[ch] to match each-other
  pinctrl: Re-order pinconf.[ch] to match each-other
  pinctrl: core.c/h cleanups
  pinctrl: Assume map table entries can't have a NULL name field
  pinctrl: Disallow map table entries with NULL dev_name field
  pinctrl: Assume map table entries can't have a NULL ctrl_dev_name
  pinctrl: Downgrade pinctrl_get warning when no maps are found
  pinctrl: Use dev_*() instead of pr_*(), add some msgs, minor cleanups
  pinctrl: Error if mapping table's control dev can't be found
  pinctrl: Allocate sizeof(*p) instead of sizeof(struct foo)
  pinctrl: Fix and simplify locking
  pinctrl: Refactor struct pinctrl handling in core.c vs pinmux.c
  pinctrl: Add usecount to pins for muxing
  pinctrl: Fix pinconf_groups_show() to emit newline
  pinctrl: API changes to support multiple states per device
  pinctrl: Enhance mapping table to support pin config operations

 Documentation/pinctrl.txt         |  244 +++++++----
 arch/arm/mach-u300/core.c         |   28 +-
 drivers/pinctrl/core.c            |  936 +++++++++++++++++++++----------------
 drivers/pinctrl/core.h            |  100 +++--
 drivers/pinctrl/pinconf.c         |  288 ++++++++++--
 drivers/pinctrl/pinconf.h         |   45 ++-
 drivers/pinctrl/pinmux.c          |  578 ++++++++---------------
 drivers/pinctrl/pinmux.h          |   61 ++--
 drivers/tty/serial/sirfsoc_uart.c |   12 +-
 include/linux/pinctrl/consumer.h  |   55 ++-
 include/linux/pinctrl/machine.h   |  131 ++++--
 include/linux/pinctrl/pinctrl.h   |    1 -
 12 files changed, 1438 insertions(+), 1041 deletions(-)


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds