lkml.org 
[lkml]   [2012]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC 2/2] usb: gadget: composite: parse dt overrides
Date
Grab the devicetree node properties to override VendorId, ProductId,
bcdDevice, Manucacturer, Product and SerialNumber

Signed-off-by: Alexandre Pereira da Silva <aletes.xgr@gmail.com>
---
drivers/usb/gadget/composite.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 390749b..f3b480e 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -17,6 +17,7 @@
#include <linux/module.h>
#include <linux/device.h>
#include <linux/utsname.h>
+#include <linux/of.h>

#include <linux/usb/composite.h>
#include <asm/unaligned.h>
@@ -1423,6 +1424,7 @@ static int composite_bind(struct usb_gadget *gadget)
{
struct usb_composite_dev *cdev;
int status = -ENOMEM;
+ struct device_node *np = gadget->dev.of_node;

cdev = kzalloc(sizeof *cdev, GFP_KERNEL);
if (!cdev)
@@ -1470,6 +1472,35 @@ static int composite_bind(struct usb_gadget *gadget)

cdev->desc = *composite->dev;

+ /* grab overrides from devicetree */
+ if (np) {
+ u32 reg;
+
+ if (!idVendor &&
+ of_property_read_u32(np, "vendor_id", &reg) == 0)
+ idVendor = reg;
+
+ if (!idProduct &&
+ of_property_read_u32(np, "product_id", &reg) == 0)
+ idProduct = reg;
+
+ if (!bcdDevice &&
+ of_property_read_u32(np, "bcd_device", &reg) == 0)
+ bcdDevice = reg;
+
+ if (!iManufacturer)
+ of_property_read_string(np, "manufacturer",
+ &iManufacturer);
+
+ if (!iProduct)
+ of_property_read_string(np, "product",
+ &iProduct);
+
+ if (!iSerialNumber)
+ of_property_read_string(np, "serial_number",
+ &iSerialNumber);
+ }
+
/* standardized runtime overrides for device ID data */
if (idVendor)
cdev->desc.idVendor = cpu_to_le16(idVendor);
--
1.7.10


\
 
 \ /
  Last update: 2012-06-25 22:41    [W:0.045 / U:0.672 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site