[U-Boot] [PATCH v2 01/10] syscon: dm: Add a new method to get a regmap from DTS

Simon Glass sjg at chromium.org
Mon Mar 19 17:59:01 UTC 2018


Hi Jean-Jacques,

On 14 March 2018 at 10:18, Jean-Jacques Hiblot <jjhiblot at ti.com> wrote:
> syscon_regmap_lookup_by_phandle() can be used to the regmap of a syscon
> device from a reference in the DTS. It operates similarly to the linux
> version of the namesake function.
>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
> ---
>
> Changes in v2: None
>
>  drivers/core/syscon-uclass.c | 23 +++++++++++++++++++++++
>  include/syscon.h             | 13 +++++++++++++
>  2 files changed, 36 insertions(+)
>
> diff --git a/drivers/core/syscon-uclass.c b/drivers/core/syscon-uclass.c
> index a69937e..0c76bfc 100644
> --- a/drivers/core/syscon-uclass.c
> +++ b/drivers/core/syscon-uclass.c
> @@ -45,6 +45,29 @@ static int syscon_pre_probe(struct udevice *dev)
>  #endif
>  }
>
> +struct regmap *syscon_regmap_lookup_by_phandle(struct udevice *dev,
> +                                              const char *name)
> +{
> +       struct udevice *syscon;
> +       struct regmap *r;
> +       int err;
> +
> +       err = uclass_get_device_by_phandle(UCLASS_SYSCON, dev,
> +                                          name, &syscon);
> +       if (err) {
> +               printf("unable to find syscon device\n");

Can you please make these debug()?

> +               return ERR_PTR(err);
> +       }
> +
> +       r = syscon_get_regmap(syscon);
> +       if (!r) {
> +               printf("unable to find regmap\n");
> +               return ERR_PTR(-ENODEV);
> +       }
> +
> +       return r;
> +}
> +
>  int syscon_get_by_driver_data(ulong driver_data, struct udevice **devp)
>  {
>         struct udevice *dev;
> diff --git a/include/syscon.h b/include/syscon.h
> index 5d52b1c..23d257a 100644
> --- a/include/syscon.h
> +++ b/include/syscon.h
> @@ -74,6 +74,19 @@ int syscon_get_by_driver_data(ulong driver_data, struct udevice **devp);
>  struct regmap *syscon_get_regmap_by_driver_data(ulong driver_data);
>
>  /**
> + * syscon_regmap_lookup_by_phandle() - Look up a controller by a phandle
> + *
> + * This operates by looking up the given name in the device (device
> + * tree property) of the device using the system controller.
> + *
> + * @dev:       Device using the system controller
> + * @name:      Name of property referring to the system controller
> + * @return     A pointer to the regmap if found, ERR_PTR(-ve) on error
> + */
> +struct regmap *syscon_regmap_lookup_by_phandle(struct udevice *dev,
> +                                              const char *name);

At some point we should have a test which calls this.

> +
> +/**
>   * syscon_get_first_range() - get the first memory range from a syscon regmap
>   *
>   * @driver_data:       Driver data value to look up
> --
> 2.7.4
>

Regards,
Simon


More information about the U-Boot mailing list