[U-Boot] [PATCH 3/3] Kconfig: i2c: add entry for driver-model software i2c

Masahiro Yamada yamada.masahiro at socionext.com
Wed Mar 25 04:35:07 CET 2015


Hi.



2015-03-10 19:30 GMT+09:00 Przemyslaw Marczak <p.marczak at samsung.com>:
> Signed-off-by: Przemyslaw Marczak <p.marczak at samsung.com>
> Cc: Masahiro Yamada <yamada.m at jp.panasonic.com>

I am no longer working for Panasonic.
The old email address will get unavailable at the end of March.

Going forward, please use my new address, yamada.masahiro at socionext.com



>
> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> index 0a52ed9..dd7eb3c 100644
> --- a/drivers/i2c/Kconfig
> +++ b/drivers/i2c/Kconfig
> @@ -13,6 +13,49 @@ config DM_I2C_COMPAT
>           to convert all code for a board in a single commit. It should not
>           be enabled for any board in an official release.
>
> +config DM_I2C_SOFT
> +       bool "Enable Driver Model for Software I2C Driver"
> +       depends on DM_I2C
> +       help
> +         Enable the i2c bus driver emulation by using GPIO.

Very nice!

> +         The bus configuration is given by the device-tree, like below.
> +
> +         /* First, define the alias number to have continuous bus numbering */
> +         aliases {
> +           [...]
> +           i2c5 = "/i2c at 13500000";
> +           i2c6 = "/soft-i2c at 1";
> +           [...]
> +         }

This description is not specific to this CONFIG option.

The relation between the aliases node and the sequence number
is well-documented in doc/driver-model/README.txt.

Should we repeat it here?


> +         /* And next define the basic bus attributes */
> +         soft-i2c at 1 {
> +           #address-cells = <1>;
> +           #size-cells = <0>;
> +           compatible = "soft-i2c";
> +           clock-frequency = <50000>;
> +           /* Define the proper GPIO pins */
> +           clock-pin = <&gpa0 0 GPIO_ACTIVE_HIGH>;
> +           data-pin = <&gpa0 1 GPIO_ACTIVE_HIGH>;
> +
> +           /* Optionally, define some driver node (bus child) */
> +           somedev at 0x44 {
> +               compatible = "somedev";
> +               reg = <0x44>;
> +               [...]
> +           };
> +         }

This is binding information, right?

Stuff like that is usually documented in a separate text file.

In Linux, Documentation/devicetree/bindings/i2c/
In U-boot, doc/device-tree-bindings/i2c/



> +         The device can be accessed by the i2c command:
> +         # i2c dev 8                   (bus number set by alias)
> +         # i2c probe <0x44>            (address is optionally)
> +         # i2c md 0x44 0x0             (dump dev registers at address 0x0)
> +         # Valid chip addresses: 0x44  (success!)
> +         ...


This is the usage of "i2c" command.
It is not specific to this option, either.




> +         Driving the bus lines is done by dm gpio calls in the preprocessor
> +         macros. Each, can be redefined by the user.
> +
>  config SYS_I2C_UNIPHIER
>         bool "UniPhier I2C driver"
>         depends on ARCH_UNIPHIER && DM_I2C
> --
> 1.9.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot



-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list