]> git.karo-electronics.de Git - linux-beck.git/commitdiff
usb: ulpi: add new api functions, {read|write}_dev()
authorTal Shorer <tal.shorer@gmail.com>
Tue, 16 Aug 2016 16:04:47 +0000 (19:04 +0300)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 6 Sep 2016 07:47:23 +0000 (10:47 +0300)
Add these two new api callbacks to struct ulpi_ops. These are different
than read, write in that they pass the parent device directly instead
of via the ops argument.
They are intended to replace the old api functions.

If the new api callbacks are missing, revert to calling the old ones
as before.

Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Tal Shorer <tal.shorer@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/common/ulpi.c
include/linux/ulpi/interface.h

index d1f419c7cddb685d670e1d06a80fa315b3ad2319..a877ddbbe826254f7b92a959f77b9d02e8d72738 100644 (file)
 
 int ulpi_read(struct ulpi *ulpi, u8 addr)
 {
-       return ulpi->ops->read(ulpi->ops, addr);
+       if (!ulpi->ops->read_dev)
+               return ulpi->ops->read(ulpi->ops, addr);
+       return ulpi->ops->read_dev(ulpi->dev.parent, addr);
 }
 EXPORT_SYMBOL_GPL(ulpi_read);
 
 int ulpi_write(struct ulpi *ulpi, u8 addr, u8 val)
 {
-       return ulpi->ops->write(ulpi->ops, addr, val);
+       if (!ulpi->ops->write_dev)
+               return ulpi->ops->write(ulpi->ops, addr, val);
+       return ulpi->ops->write_dev(ulpi->dev.parent, addr, val);
 }
 EXPORT_SYMBOL_GPL(ulpi_write);
 
index 4de8ab491038382d3f098e00fe6287fa84ec1875..d8189d08eddb9889989b8cb957d23080fcdaf771 100644 (file)
@@ -15,6 +15,8 @@ struct ulpi_ops {
        struct device *dev;
        int (*read)(struct ulpi_ops *ops, u8 addr);
        int (*write)(struct ulpi_ops *ops, u8 addr, u8 val);
+       int (*read_dev)(struct device *dev, u8 addr);
+       int (*write_dev)(struct device *dev, u8 addr, u8 val);
 };
 
 struct ulpi *ulpi_register_interface(struct device *, struct ulpi_ops *);