Hi, On Wed, Nov 14, 2012 at 05:19:06PM +0100, Michael Grzeschik wrote: > This patch makes it possible to set the connection of the usbphy to the > soc. It is derived from the oftree bindings for the ethernetphy and adds > similar helperfunctions. > > Signed-off-by: Michael Grzeschik <[email protected]> > Signed-off-by: Marc Kleine-Budde <[email protected]> > --- > drivers/of/Kconfig | 4 ++++ > drivers/of/Makefile | 1 + > drivers/of/of_usbphy.c | 49 > +++++++++++++++++++++++++++++++++++++++++++++ > include/linux/of_usbphy.h | 15 ++++++++++++++ > include/linux/usb/phy.h | 8 ++++++++ > 5 files changed, 77 insertions(+) > create mode 100644 drivers/of/of_usbphy.c > create mode 100644 include/linux/of_usbphy.h > > diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig > index dfba3e6..28f99fb 100644 > --- a/drivers/of/Kconfig > +++ b/drivers/of/Kconfig > @@ -67,6 +67,10 @@ config OF_MDIO > help > OpenFirmware MDIO bus (Ethernet PHY) accessors > > +config OF_USBPHY > + depends on USB > + def_bool y > + > config OF_PCI > def_tristate PCI > depends on PCI > diff --git a/drivers/of/Makefile b/drivers/of/Makefile > index e027f44..fdcaf51 100644 > --- a/drivers/of/Makefile > +++ b/drivers/of/Makefile > @@ -6,6 +6,7 @@ obj-$(CONFIG_OF_IRQ) += irq.o > obj-$(CONFIG_OF_DEVICE) += device.o platform.o > obj-$(CONFIG_OF_I2C) += of_i2c.o > obj-$(CONFIG_OF_NET) += of_net.o > +obj-$(CONFIG_OF_USBPHY) += of_usbphy.o > obj-$(CONFIG_OF_SELFTEST) += selftest.o > obj-$(CONFIG_OF_MDIO) += of_mdio.o > obj-$(CONFIG_OF_PCI) += of_pci.o > diff --git a/drivers/of/of_usbphy.c b/drivers/of/of_usbphy.c > new file mode 100644 > index 0000000..2e71f7b > --- /dev/null > +++ b/drivers/of/of_usbphy.c > @@ -0,0 +1,49 @@ > +/* > + * OF helpers for network devices. > + * > + * This file is released under the GPLv2 > + * > + * Initially copied out of drivers/of/of_net.c > + */ > +#include <linux/etherdevice.h> > +#include <linux/kernel.h> > +#include <linux/of_usbphy.h> > +#include <linux/usb/phy.h> > +#include <linux/export.h> > + > +/** > + * It maps 'enum usb_phy_interface' found in include/linux/usb/phy.h > + * into the device tree binding of 'phy-mode', so that USB > + * device driver can get phy interface from device tree. > + */
provide proper kernel-doc
> +static const char *usbphy_modes[] = {
> + [USBPHY_INTERFACE_MODE_NA] = "",
> + [USBPHY_INTERFACE_MODE_UTMI] = "utmi",
> + [USBPHY_INTERFACE_MODE_UTMIW] = "utmiw",
> + [USBPHY_INTERFACE_MODE_ULPI] = "ulpi",
> + [USBPHY_INTERFACE_MODE_SERIAL] = "fsls",
> +};
In fact, these would be better off as constants:
#define USBPHY_INTERFACE_MODE_UTMI 1
#define USBPHY_INTERFACE_MODE_UTMIW 2
...
> +/**
> + * of_get_phy_mode - Get phy mode for given device_node
> + * @np: Pointer to the given device_node
> + *
> + * The function gets phy interface string from property 'phy-mode',
> + * and return its index in phy_modes table, or errno in error case.
> + */
why do you pass a string instead of passing an Integer ? This makes no
sense to me.
> +const int of_get_usbphy_mode(struct device_node *np)
> +{
> + const char *pm;
> + int err, i;
> +
> + err = of_property_read_string(np, "phy-mode", &pm);
> + if (err < 0)
> + return err;
> +
> + for (i = 0; i < ARRAY_SIZE(usbphy_modes); i++)
> + if (!strcasecmp(pm, usbphy_modes[i]))
> + return i;
> +
> + return -ENODEV;
> +}
> +EXPORT_SYMBOL_GPL(of_get_usbphy_mode);
> diff --git a/include/linux/of_usbphy.h b/include/linux/of_usbphy.h
> new file mode 100644
> index 0000000..9a4132d
> --- /dev/null
> +++ b/include/linux/of_usbphy.h
> @@ -0,0 +1,15 @@
> +/*
> + * OF helpers for usb devices.
> + *
> + * This file is released under the GPLv2
> + */
> +
> +#ifndef __LINUX_OF_USBPHY_H
> +#define __LINUX_OF_USBPHY_H
> +
> +#ifdef CONFIG_OF_USBPHY
> +#include <linux/of.h>
> +extern const int of_get_usbphy_mode(struct device_node *np);
> +#endif
> +
> +#endif /* __LINUX_OF_USBPHY_H */
> diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h
> index a29ae1e..150eb69 100644
> --- a/include/linux/usb/phy.h
> +++ b/include/linux/usb/phy.h
> @@ -12,6 +12,14 @@
> #include <linux/notifier.h>
> #include <linux/usb.h>
>
> +enum usb_phy_interface {
> + USBPHY_INTERFACE_MODE_NA,
> + USBPHY_INTERFACE_MODE_UTMI,
> + USBPHY_INTERFACE_MODE_UTMIW,
> + USBPHY_INTERFACE_MODE_ULPI,
> + USBPHY_INTERFACE_MODE_SERIAL,
> +};
no documentation at all here... What does UTMIW mean ? Why do you mean
the NA mode ?
--
balbi
signature.asc
Description: Digital signature
_______________________________________________ devicetree-discuss mailing list [email protected] https://lists.ozlabs.org/listinfo/devicetree-discuss
