summaryrefslogtreecommitdiff
path: root/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-otg-add-notifier-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-otg-add-notifier-support.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-otg-add-notifier-support.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-otg-add-notifier-support.patch b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-otg-add-notifier-support.patch
new file mode 100644
index 000000000..3beca4f4d
--- /dev/null
+++ b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-USB-otg-add-notifier-support.patch
@@ -0,0 +1,85 @@
+From 76ca24d389a3f5eaf11d94efab15d5bef11a0a74 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Thu, 17 Dec 2009 13:01:36 +0200
+Subject: [PATCH 10/10] USB: otg: add notifier support
+
+Patch-mainline: 2.6.34
+Git-commit: e9a20171dfa0aa134d2211126d1310f2daea52cf
+
+The notifier will be used to communicate usb events
+to other drivers like the charger chip.
+
+This can be used as source of information to kick
+usb charger detection as described by the USB
+Battery Charging Specification 1.1 and/or to
+pass bMaxPower field of selected usb_configuration
+to charger chip in order to use that information
+as input current on the charging profile
+setup.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+ include/linux/usb/otg.h | 25 +++++++++++++++++++++++++
+ 1 files changed, 25 insertions(+), 0 deletions(-)
+
+diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
+index 52bb917..6c0b676 100644
+--- a/include/linux/usb/otg.h
++++ b/include/linux/usb/otg.h
+@@ -9,6 +9,8 @@
+ #ifndef __LINUX_USB_OTG_H
+ #define __LINUX_USB_OTG_H
+
++#include <linux/notifier.h>
++
+ /* OTG defines lots of enumeration states before device reset */
+ enum usb_otg_state {
+ OTG_STATE_UNDEFINED = 0,
+@@ -33,6 +35,14 @@ enum usb_otg_state {
+ OTG_STATE_A_VBUS_ERR,
+ };
+
++enum usb_xceiv_events {
++ USB_EVENT_NONE, /* no events or cable disconnected */
++ USB_EVENT_VBUS, /* vbus valid event */
++ USB_EVENT_ID, /* id was grounded */
++ USB_EVENT_CHARGER, /* usb dedicated charger */
++ USB_EVENT_ENUMERATED, /* gadget driver enumerated */
++};
++
+ #define USB_OTG_PULLUP_ID (1 << 0)
+ #define USB_OTG_PULLDOWN_DP (1 << 1)
+ #define USB_OTG_PULLDOWN_DM (1 << 2)
+@@ -70,6 +80,9 @@ struct otg_transceiver {
+ struct otg_io_access_ops *io_ops;
+ void __iomem *io_priv;
+
++ /* for notification of usb_xceiv_events */
++ struct blocking_notifier_head notifier;
++
+ /* to pass extra port status to the root hub */
+ u16 port_status;
+ u16 port_change;
+@@ -203,6 +216,18 @@ otg_start_srp(struct otg_transceiver *otg)
+ return otg->start_srp(otg);
+ }
+
++/* notifiers */
++static inline int
++otg_register_notifier(struct otg_transceiver *otg, struct notifier_block *nb)
++{
++ return blocking_notifier_chain_register(&otg->notifier, nb);
++}
++
++static inline void
++otg_unregister_notifier(struct otg_transceiver *otg, struct notifier_block *nb)
++{
++ blocking_notifier_chain_unregister(&otg->notifier, nb);
++}
+
+ /* for OTG controller drivers (and maybe other stuff) */
+ extern int usb_bus_start_enum(struct usb_bus *bus, unsigned port_num);
+--
+1.6.0.4
+