summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-04-06 13:28:42 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-04-11 11:48:36 +0200
commita40442cfa4ece00ea7a3d0d973dc86f49d7f3406 (patch)
treeb14e80060fb3a806a064ae37f0c7579c1e8a1d42
parentd8ee54fbbf605f93c412a984313d4ed841eba2f9 (diff)
downloadbarebox-a40442cfa4ece00ea7a3d0d973dc86f49d7f3406.tar.gz
barebox-a40442cfa4ece00ea7a3d0d973dc86f49d7f3406.tar.xz
USB gadget at91: Use dev_add_param_bool for vbus parameter
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/usb/gadget/at91_udc.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
index 917ec4d006..a11379c933 100644
--- a/drivers/usb/gadget/at91_udc.c
+++ b/drivers/usb/gadget/at91_udc.c
@@ -1316,17 +1316,9 @@ static struct at91_udc controller = {
static void at91_udc_irq (void *_udc);
-static void at91_update_vbus(struct at91_udc *udc, u32 value)
+static int at91_udc_vbus_set(struct param_d *p, void *priv)
{
- if (value == udc->gpio_vbus_val)
- return;
-
- if (value)
- dev_set_param(udc->dev, "vbus", "1");
- else
- dev_set_param(udc->dev, "vbus", "0");
-
- udc->gpio_vbus_val = value;
+ return -EROFS;
}
int usb_gadget_poll(void)
@@ -1340,11 +1332,10 @@ int usb_gadget_poll(void)
value = gpio_get_value(udc->board.vbus_pin);
value ^= udc->board.vbus_active_low;
- if (!value) {
- at91_update_vbus(udc, value);
+ udc->gpio_vbus_val = value;
+
+ if (!value)
return 0;
- }
- at91_update_vbus(udc, value);
value = at91_udp_read(udc, AT91_UDP_ISR) & (~(AT91_UDP_SOFINT));
if (value)
@@ -1516,8 +1507,8 @@ static int __init at91udc_probe(struct device_d *dev)
udc->vbus = 1;
}
- dev_add_param(dev, "vbus", NULL, NULL, 0);
- dev_set_param(dev, "vbus", "0");
+ dev_add_param_bool(dev, "vbus",
+ at91_udc_vbus_set, NULL, &udc->gpio_vbus_val, udc);
poller_register(&poller);