summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDongwoo Lee <dwoo08.lee@samsung.com>2020-02-18 17:51:50 +0900
committerDongwoo Lee <dwoo08.lee@samsung.com>2020-02-24 11:08:55 +0900
commit09ffd8acdc000c6ca3d47c022ecb9b79132c1936 (patch)
tree8802274dfdaca7c9d1f0d7e8348a4bd0f57f0356
parentbdbf0601cd2e4512844ddc30ee3bf1016d5bc827 (diff)
downloadlinux-artik7-09ffd8acdc000c6ca3d47c022ecb9b79132c1936.tar.gz
linux-artik7-09ffd8acdc000c6ca3d47c022ecb9b79132c1936.tar.bz2
linux-artik7-09ffd8acdc000c6ca3d47c022ecb9b79132c1936.zip
usb: dwc2: Remove support for usb cable detection
Detection of usb cable is no longer used, thus this eliminates all relevant codes. Change-Id: I2dc226bc21dafa486e87e40ccb03b5242af774dc Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
-rw-r--r--arch/arm/boot/dts/s5p4418-artik530-raptor-common.dtsi1
-rw-r--r--arch/arm64/boot/dts/nexell/s5p6818-artik710-raptor-common.dtsi1
-rw-r--r--drivers/usb/dwc2/core.h6
-rw-r--r--drivers/usb/dwc2/gadget.c113
4 files changed, 0 insertions, 121 deletions
diff --git a/arch/arm/boot/dts/s5p4418-artik530-raptor-common.dtsi b/arch/arm/boot/dts/s5p4418-artik530-raptor-common.dtsi
index 8364778c1fd8..beed5d96ff5f 100644
--- a/arch/arm/boot/dts/s5p4418-artik530-raptor-common.dtsi
+++ b/arch/arm/boot/dts/s5p4418-artik530-raptor-common.dtsi
@@ -146,7 +146,6 @@
dwc2otg@c0040000 {
gpios = <&gpio_a 15 0>;
- g-extcon-notify;
status = "okay";
};
diff --git a/arch/arm64/boot/dts/nexell/s5p6818-artik710-raptor-common.dtsi b/arch/arm64/boot/dts/nexell/s5p6818-artik710-raptor-common.dtsi
index 4575418cf569..70f58f046e33 100644
--- a/arch/arm64/boot/dts/nexell/s5p6818-artik710-raptor-common.dtsi
+++ b/arch/arm64/boot/dts/nexell/s5p6818-artik710-raptor-common.dtsi
@@ -144,7 +144,6 @@
dwc2otg@c0040000 {
gpios = <&gpio_a 15 0>;
- g-extcon-notify;
status = "okay";
};
diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
index e8285ab110c4..dfd7d4c9f0f4 100644
--- a/drivers/usb/dwc2/core.h
+++ b/drivers/usb/dwc2/core.h
@@ -872,12 +872,6 @@ struct dwc2_hsotg {
u32 g_rx_fifo_sz;
u32 g_np_g_tx_fifo_sz;
u32 g_tx_fifo_sz[MAX_EPS_CHANNELS];
- u32 g_extcon_notify;
-
-#if IS_ENABLED(CONFIG_EXTCON)
- struct extcon_dev *edev;
- struct work_struct extcon_work;
-#endif /* CONFIG_EXTCON */
#endif /* CONFIG_USB_DWC2_PERIPHERAL || CONFIG_USB_DWC2_DUAL_ROLE */
};
diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index 1da1792a284f..7b1428cd51a8 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -26,7 +26,6 @@
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/of_platform.h>
-#include <linux/extcon.h>
#include <linux/usb/ch9.h>
#include <linux/usb/gadget.h>
@@ -35,72 +34,6 @@
#include "core.h"
#include "hw.h"
-#if IS_ENABLED(CONFIG_EXTCON)
-static const unsigned int supported_cable[] = {
- EXTCON_USB,
- EXTCON_NONE,
-};
-
-static inline void dwc2_gadget_extcon_notify(struct dwc2_hsotg *hsotg)
-{
- queue_work(system_power_efficient_wq, &hsotg->extcon_work);
-}
-
-static inline void dwc2_gadget_cancel_extcon_work(struct dwc2_hsotg *hsotg)
-{
- cancel_work_sync(&hsotg->extcon_work);
-}
-
-static void dwc2_gadget_extcon_work(struct work_struct *work)
-{
- struct dwc2_hsotg *hsotg = container_of(work, struct dwc2_hsotg,
- extcon_work);
- u32 usb_status = dwc2_readl(hsotg->regs + GOTGCTL);
-
- if (usb_status & (GOTGCTL_ASESVLD | GOTGCTL_BSESVLD))
- extcon_set_cable_state_(hsotg->edev, EXTCON_USB, true);
- else
- extcon_set_cable_state_(hsotg->edev, EXTCON_USB, false);
-}
-
-static int dwc2_gadget_extcon_init(struct dwc2_hsotg *hsotg)
-{
- struct device *dev = hsotg->dev;
- struct extcon_dev *edev;
- int ret;
-
- if (!hsotg->g_extcon_notify)
- return 0;
-
- edev = devm_extcon_dev_allocate(dev, supported_cable);
- if (IS_ERR(edev))
- return -ENODEV;
-
- ret = devm_extcon_dev_register(dev, edev);
- if (ret)
- return ret;
-
- hsotg->edev = edev;
-
- INIT_WORK(&hsotg->extcon_work, dwc2_gadget_extcon_work);
-
- return 0;
-}
-#else
-static inline void dwc2_gadget_extcon_notify(struct dwc2_hsotg *hsotg)
-{
-}
-
-static inline void dwc2_gadget_cancel_extcon_work(struct dwc2_hsotg *hsotg)
-{
-}
-
-static inline int dwc2_gadget_extcon_init(struct dwc2_hsotg *hsotg)
-{
- return 0;
-}
-#endif /* CONFIG_EXTCON */
-
/* conversion functions */
static inline struct dwc2_hsotg_req *our_req(struct usb_request *req)
{
@@ -2571,31 +2504,12 @@ irq_retry:
if (usb_status & GOTGCTL_BSESVLD && connected)
dwc2_hsotg_core_init_disconnected(hsotg, true);
-
- if (hsotg->g_extcon_notify) {
- /*
- * USBRST interrupt can be generated by not only
- * disconnection but also other reason. So, we
- * should check the connection state with usb_status.
- * Fortunately, GOTGCTL_ASESVLD and GOTGCTL_BSESVLD
- * is activated only if the cable is connected. So,
- * we can recognize the disconnection situation by
- * checking both bits are not set.
- */
- u32 flags = GOTGCTL_ASESVLD | GOTGCTL_BSESVLD;
-
- if (!(usb_status & flags))
- dwc2_gadget_extcon_notify(hsotg);
- }
}
if (gintsts & GINTSTS_ENUMDONE) {
dwc2_writel(GINTSTS_ENUMDONE, hsotg->regs + GINTSTS);
dwc2_hsotg_irq_enumdone(hsotg);
-
- if (hsotg->g_extcon_notify)
- dwc2_gadget_extcon_notify(hsotg);
}
if (gintsts & (GINTSTS_OEPINT | GINTSTS_IEPINT)) {
@@ -3341,22 +3255,11 @@ static int dwc2_hsotg_pullup(struct usb_gadget *gadget, int is_on)
dwc2_hsotg_core_init_disconnected(hsotg, false);
dwc2_hsotg_core_connect(hsotg);
} else {
- /*
- * If gadget disconnection makes also PHY pullup
- * disconnection, usb controller cannot generate
- * interrupt for usb connection and thus extcon
- * notification won't be working. In order to prevent
- * this situation, we have to keep PHY pullup alive
- * when extcon notification is activated.
- */
- if (hsotg->g_extcon_notify)
- goto skip_change;
dwc2_hsotg_core_disconnect(hsotg);
dwc2_hsotg_disconnect(hsotg);
hsotg->enabled = 0;
}
-skip_change:
hsotg->gadget.speed = USB_SPEED_UNKNOWN;
spin_unlock_irqrestore(&hsotg->lock, flags);
@@ -3606,10 +3509,6 @@ static void dwc2_hsotg_of_probe(struct dwc2_hsotg *hsotg)
/* Enable dma if requested in device tree */
hsotg->g_using_dma = of_property_read_bool(np, "g-use-dma");
-#if IS_ENABLED(CONFIG_EXTCON)
- hsotg->g_extcon_notify = of_property_read_bool(np, "g-extcon-notify");
-#endif
-
/*
* Register TX periodic fifo size per endpoint.
* EP0 is excluded since it has no fifo configuration.
@@ -3680,12 +3579,6 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg, int irq)
else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL)
hsotg->op_state = OTG_STATE_B_PERIPHERAL;
- ret = dwc2_gadget_extcon_init(hsotg);
- if (ret) {
- dev_err(dev, "failed to initialize extcon device");
- return ret;
- }
-
/*
* Force Device mode before initialization.
* This allows correctly configuring fifo for device mode.
@@ -3782,9 +3675,6 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg, int irq)
*/
int dwc2_hsotg_remove(struct dwc2_hsotg *hsotg)
{
- if (hsotg->g_extcon_notify)
- dwc2_gadget_cancel_extcon_work(hsotg);
-
usb_del_gadget_udc(&hsotg->gadget);
dwc2_hsotg_ep_free_request(&hsotg->eps_out[0]->ep, hsotg->ctrl_req);
@@ -3808,9 +3698,6 @@ int dwc2_hsotg_suspend(struct dwc2_hsotg *hsotg)
}
}
- if (hsotg->g_extcon_notify)
- dwc2_gadget_cancel_extcon_work(hsotg);
-
if (hsotg->driver) {
int ep;