[U-Boot] [PATCH v5 2/3] pinctrl: add pin control uclass support
Simon Glass
sjg at chromium.org
Mon Aug 31 00:44:28 CEST 2015
On 26 August 2015 at 21:44, Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
> This creates a new framework for handling of pin control devices,
> i.e. devices that control different aspects of package pins.
>
> This uclass handles pinmuxing and pin configuration; pinmuxing
> controls switching among silicon blocks that share certain physical
> pins, pin configuration handles electronic properties such as pin-
> biasing, load capacitance etc.
>
> This framework can support the same device tree bindings, but if you
> do not need full interface support, you can disable some features to
> reduce memory foot print. Typically around 1.5KB is necessary to
> include full-featured uclass support on ARM board (CONFIG_PINCTRL +
> CONFIG_PINCTRL_FULL + CONFIG_PINCTRL_GENERIC + CONFIG_PINCTRL_PINMUX),
> for example.
>
> We are often limited on code size for SPL. Besides, we still have
> many boards that do not support device tree configuration. The full
> pinctrl, which requires OF_CONTROL, does not make sense for those
> boards. So, this framework also has a Do-It-Yourself (let's say
> simple pinctrl) interface. With CONFIG_PINCTRL_FULL disabled, the
> uclass itself provides no systematic mechanism for identifying the
> peripheral device, applying pinctrl settings, etc. They must be
> done in each low-level driver. In return, you can save much memory
> footprint and it might be useful especially for SPL.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
> Acked-by: Simon Glass <sjg at chromium.org>
> ---
>
> Changes in v5:
> - Delete vogus "select PINCTRL_SIMPLE"
> - Make PINCTRL depends on DM
> - Make SPL_PINCTRL depends on SPL_DM
> - Replace ENOTSUPP with ENOSYS
> - Do not bind child nodes as pinconfig nodes if they have "compatible"
>
> Changes in v4:
> - Squash 01 and 02 into a single commit
> - Flip the logic of CONFIG_PINCTRL_SIMPLE into CONFIG_PINCTRL_FULL
> - Fix build error: pinconf_ops -> pinctrl_ops
> - Add pinctrl_get_ops() macro
> - Add help to Kconfig entries
> - Return -ENOTSUPP rather than -EINVAL for unsupported operations
>
> drivers/Kconfig | 2 +
> drivers/Makefile | 1 +
> drivers/core/device.c | 4 +
> drivers/pinctrl/Kconfig | 101 +++++++++++
> drivers/pinctrl/Makefile | 2 +
> drivers/pinctrl/pinctrl-generic.c | 359 ++++++++++++++++++++++++++++++++++++++
> drivers/pinctrl/pinctrl-uclass.c | 240 +++++++++++++++++++++++++
> include/dm/pinctrl.h | 227 ++++++++++++++++++++++++
> include/dm/uclass-id.h | 2 +
> 9 files changed, 938 insertions(+)
> create mode 100644 drivers/pinctrl/Kconfig
> create mode 100644 drivers/pinctrl/Makefile
> create mode 100644 drivers/pinctrl/pinctrl-generic.c
> create mode 100644 drivers/pinctrl/pinctrl-uclass.c
> create mode 100644 include/dm/pinctrl.h
Applied to u-boot-dm, thanks!
More information about the U-Boot
mailing list