mirror of
https://github.com/apache/nuttx.git
synced 2026-06-07 09:18:00 +08:00
arch: cxd56xx: Fix cxd56_usbdev.c for SMP
Summary: - This commit fixes hardfault when running nxplayer with rndis_smp Impact: - SMP only Testing: - Tested with rndis_smp Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This commit is contained in:
committed by
Xiang Xiao
parent
67b9f5f9e3
commit
197187d826
@@ -1540,6 +1540,10 @@ static int cxd56_epinterrupt(int irq, FAR void *context)
|
||||
uint16_t len;
|
||||
int n;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
irqstate_t flags = enter_critical_section();
|
||||
#endif
|
||||
|
||||
eps = getreg32(CXD56_USB_DEV_EP_INTR);
|
||||
{
|
||||
for (n = 0; n < CXD56_NENDPOINTS; n++)
|
||||
@@ -1813,6 +1817,10 @@ static int cxd56_epinterrupt(int irq, FAR void *context)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
leave_critical_section(flags);
|
||||
#endif
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
@@ -2585,6 +2593,10 @@ static int cxd56_epstall(FAR struct usbdev_ep_s *ep, bool resume)
|
||||
uint32_t ctrl;
|
||||
uint32_t addr;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
irqstate_t flags = enter_critical_section();
|
||||
#endif
|
||||
|
||||
addr = USB_ISEPIN(ep->eplog) ? CXD56_USB_IN_EP_CONTROL(privep->epphy)
|
||||
: CXD56_USB_OUT_EP_CONTROL(privep->epphy);
|
||||
|
||||
@@ -2603,6 +2615,10 @@ static int cxd56_epstall(FAR struct usbdev_ep_s *ep, bool resume)
|
||||
privep->stalled = 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
leave_critical_section(flags);
|
||||
#endif
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user