Commit 6c4a8512 authored by Tony Lindgren's avatar Tony Lindgren

MUSB: Clean up cable status sysfs_notify() events

Clean up cable status sysfs_notify() events
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent e362bdfb
...@@ -973,8 +973,7 @@ static int musb_gadget_enable(struct usb_ep *ep, ...@@ -973,8 +973,7 @@ static int musb_gadget_enable(struct usb_ep *ep,
pEnd->dma ? "dma, " : "", pEnd->dma ? "dma, " : "",
pEnd->wPacketSize); pEnd->wPacketSize);
pThis->status |= MUSB_VBUS_STATUS_CHG; sysfs_notify(&pThis->controller->kobj, NULL, "cable");
schedule_work(&pThis->irq_work);
fail: fail:
spin_unlock_irqrestore(&pThis->Lock, flags); spin_unlock_irqrestore(&pThis->Lock, flags);
...@@ -1017,8 +1016,7 @@ static int musb_gadget_disable(struct usb_ep *ep) ...@@ -1017,8 +1016,7 @@ static int musb_gadget_disable(struct usb_ep *ep)
/* abort all pending DMA and requests */ /* abort all pending DMA and requests */
nuke(pEnd, -ESHUTDOWN); nuke(pEnd, -ESHUTDOWN);
pThis->status |= MUSB_VBUS_STATUS_CHG; /* FIXME not for ep_disable!! */ sysfs_notify(&pThis->controller->kobj, NULL, "cable");
schedule_work(&pThis->irq_work);
spin_unlock_irqrestore(&(pThis->Lock), flags); spin_unlock_irqrestore(&(pThis->Lock), flags);
......
...@@ -197,9 +197,6 @@ enum musb_g_ep0_state { ...@@ -197,9 +197,6 @@ enum musb_g_ep0_state {
MGC_END0_STAGE_ACKWAIT, /* after zlp, before statusin */ MGC_END0_STAGE_ACKWAIT, /* after zlp, before statusin */
} __attribute__ ((packed)); } __attribute__ ((packed));
/* driver and cable VBUS status states for musb_irq_work */
#define MUSB_VBUS_STATUS_CHG (1 << 0)
/* failure codes */ /* failure codes */
#define MUSB_ERR_WAITING 1 #define MUSB_ERR_WAITING 1
#define MUSB_ERR_VBUS -1 #define MUSB_ERR_VBUS -1
...@@ -395,7 +392,6 @@ struct musb { ...@@ -395,7 +392,6 @@ struct musb {
spinlock_t Lock; spinlock_t Lock;
struct clk *clock; struct clk *clock;
irqreturn_t (*isr)(int, void *, struct pt_regs *); irqreturn_t (*isr)(int, void *, struct pt_regs *);
struct work_struct irq_work;
#ifdef CONFIG_USB_MUSB_HDRC_HCD #ifdef CONFIG_USB_MUSB_HDRC_HCD
...@@ -450,8 +446,6 @@ struct musb { ...@@ -450,8 +446,6 @@ struct musb {
u8 board_mode; /* enum musb_mode */ u8 board_mode; /* enum musb_mode */
int (*board_set_power)(int state); int (*board_set_power)(int state);
u8 status; /* status change flags for musb_irq_work */
s8 bFailCode; /* one of MUSB_ERR_* failure code */ s8 bFailCode; /* one of MUSB_ERR_* failure code */
/* active means connected and not suspended */ /* active means connected and not suspended */
......
...@@ -529,6 +529,8 @@ static irqreturn_t musb_stage0_irq(struct musb * pThis, u8 bIntrUSB, ...@@ -529,6 +529,8 @@ static irqreturn_t musb_stage0_irq(struct musb * pThis, u8 bIntrUSB,
otg_input_changed(pThis, devctl, TRUE, FALSE, otg_input_changed(pThis, devctl, TRUE, FALSE,
(power & MGC_M_POWER_SUSPENDM) (power & MGC_M_POWER_SUSPENDM)
? TRUE : FALSE); ? TRUE : FALSE);
sysfs_notify(&pThis->controller->kobj, NULL, "cable");
} }
handled = IRQ_HANDLED; handled = IRQ_HANDLED;
...@@ -612,6 +614,8 @@ static irqreturn_t musb_stage2_irq(struct musb * pThis, u8 bIntrUSB, ...@@ -612,6 +614,8 @@ static irqreturn_t musb_stage2_irq(struct musb * pThis, u8 bIntrUSB,
/* REVISIT all OTG state machine transitions */ /* REVISIT all OTG state machine transitions */
otg_input_changed_X(pThis, FALSE, FALSE); otg_input_changed_X(pThis, FALSE, FALSE);
sysfs_notify(&pThis->controller->kobj, NULL, "cable");
} }
if (bIntrUSB & MGC_M_INTR_SUSPEND) { if (bIntrUSB & MGC_M_INTR_SUSPEND) {
...@@ -1457,24 +1461,6 @@ static DEVICE_ATTR(cable, S_IRUGO, musb_cable_show, NULL); ...@@ -1457,24 +1461,6 @@ static DEVICE_ATTR(cable, S_IRUGO, musb_cable_show, NULL);
#endif #endif
static void musb_irq_work(void *data)
{
struct musb *musb = (struct musb *)data;
unsigned long flags;
u8 event = 0;
spin_lock_irqsave(&musb->Lock, flags);
if (musb->status & MUSB_VBUS_STATUS_CHG) {
musb->status &= ~MUSB_VBUS_STATUS_CHG;
event = 1;
}
spin_unlock_irqrestore(&musb->Lock, flags);
#ifdef CONFIG_SYSFS
if (event)
sysfs_notify(&musb->controller->kobj, NULL, "cable");
#endif
}
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
* Init support * Init support
*/ */
...@@ -1746,8 +1732,6 @@ fail: ...@@ -1746,8 +1732,6 @@ fail:
return status; return status;
} }
INIT_WORK(&pThis->irq_work, musb_irq_work, pThis);
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
device_create_file(dev, &dev_attr_mode); device_create_file(dev, &dev_attr_mode);
device_create_file(dev, &dev_attr_cable); device_create_file(dev, &dev_attr_cable);
......
...@@ -318,8 +318,8 @@ tusb_otg_ints(struct musb *musb, u32 int_src, void __iomem *base) ...@@ -318,8 +318,8 @@ tusb_otg_ints(struct musb *musb, u32 int_src, void __iomem *base)
} }
DBG(1, "%s\n", musb->is_active DBG(1, "%s\n", musb->is_active
? "b_peripheral" : "b_idle"); ? "b_peripheral" : "b_idle");
musb->status |= MUSB_VBUS_STATUS_CHG;
schedule_work(&musb->irq_work); sysfs_notify(&musb->controller->kobj, NULL, "cable");
} }
} }
...@@ -355,8 +355,8 @@ irqreturn_t tusb_interrupt(int irq, void *__hci, struct pt_regs *r) ...@@ -355,8 +355,8 @@ irqreturn_t tusb_interrupt(int irq, void *__hci, struct pt_regs *r)
musb_writel(base, TUSB_PRCM_WAKEUP_CLEAR, reg); musb_writel(base, TUSB_PRCM_WAKEUP_CLEAR, reg);
if (reg & ~TUSB_PRCM_WNORCS) { if (reg & ~TUSB_PRCM_WNORCS) {
schedule_work(&musb->irq_work);
musb->is_active = 1; musb->is_active = 1;
sysfs_notify(&musb->controller->kobj, NULL, "cable");
} }
DBG(3, "wake %sactive %02x\n", DBG(3, "wake %sactive %02x\n",
musb->is_active ? "" : "in", reg); musb->is_active ? "" : "in", reg);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment