Merge remote-tracking branch 'origin/master' into bas24
This commit is contained in:
commit
f29df7bc58
@ -8910,3 +8910,5 @@
|
||||
Add mktemp() and mkstemp() (2014-11-05).
|
||||
* libc/stdio/lib_tempnam.c, lib_tmpnam.c, Kconfig, Make.defs and
|
||||
include/stdio.h: Add tmpnam() and tempnam() (2014-11-05).
|
||||
* drivers/rwbuffer.c: Fix typo that can cause compiler error (2014-11-05).
|
||||
|
||||
|
@ -2118,6 +2118,10 @@
|
||||
#define _USB_DAINT_RESETVALUE 0x00000000UL /* Default value for USB_DAINT */
|
||||
#define _USB_DAINT_MASK 0x007F007FUL /* Mask for USB_DAINT */
|
||||
|
||||
#define _USB_DAINT_INEPINT_SHIFT 0 /* Shift value for IN endpoint interrupt bits */
|
||||
#define _USB_DAINT_INEPINT_MASK 0x7FUL /* Mask of all IN endpoint interrupt bits */
|
||||
#define USB_DAINT_INEPINT(n) (0x1UL << ((n)+_USB_DAINT_INEPINT_SHIFT))
|
||||
|
||||
#define USB_DAINT_INEPINT0 (0x1UL << 0) /* IN Endpoint 0 Interrupt Bit */
|
||||
#define _USB_DAINT_INEPINT0_SHIFT 0 /* Shift value for USB_INEPINT0 */
|
||||
#define _USB_DAINT_INEPINT0_MASK 0x1UL /* Bit mask for USB_INEPINT0 */
|
||||
@ -2153,6 +2157,11 @@
|
||||
#define _USB_DAINT_INEPINT6_MASK 0x40UL /* Bit mask for USB_INEPINT6 */
|
||||
#define _USB_DAINT_INEPINT6_DEFAULT 0x00000000UL /* Mode DEFAULT for USB_DAINT */
|
||||
#define USB_DAINT_INEPINT6_DEFAULT (_USB_DAINT_INEPINT6_DEFAULT << 6) /* Shifted mode DEFAULT for USB_DAINT */
|
||||
|
||||
#define _USB_DAINT_OUTEPINT_SHIFT 16 /* Shift value for all IN endpoint interrupt bits */
|
||||
#define _USB_DAINT_OUTEPINT_MASK 0x7F0000UL /* Mask of OUT IN endpoint interrupt bits */
|
||||
#define USB_DAINT_OUTEPINT(n) (0x1UL << ((n)+_USB_DAINT_OUTEPINT_SHIFT))
|
||||
|
||||
#define USB_DAINT_OUTEPINT0 (0x1UL << 16) /* OUT Endpoint 0 Interrupt Bit */
|
||||
#define _USB_DAINT_OUTEPINT0_SHIFT 16 /* Shift value for USB_OUTEPINT0 */
|
||||
#define _USB_DAINT_OUTEPINT0_MASK 0x10000UL /* Bit mask for USB_OUTEPINT0 */
|
||||
|
@ -2002,7 +2002,7 @@ static void efm32_usbreset(struct efm32_usbdev_s *priv)
|
||||
|
||||
/* Mask all device endpoint interrupts except EP0 */
|
||||
|
||||
regval = (USB_DAINT_IEP(EP0) | USB_DAINT_OEP(EP0));
|
||||
regval = (USB_DAINT_INEPINT(EP0) | USB_DAINT_OUTEPINT(EP0));
|
||||
efm32_putreg(regval, EFM32_USB_DAINTMSK);
|
||||
|
||||
/* Unmask OUT interrupts */
|
||||
@ -2600,7 +2600,7 @@ static inline void efm32_epout_interrupt(FAR struct efm32_usbdev_s *priv)
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DAINT);
|
||||
regval &= efm32_getreg(EFM32_USB_DAINTMSK);
|
||||
daint = (regval & _USB_DAINT_OEP_MASK) >> _USB_DAINT_OEP_SHIFT;
|
||||
daint = (regval & _USB_DAINT_OUTEPINT_MASK) >> _USB_DAINT_OUTEPINT_SHIFT;
|
||||
|
||||
if (daint == 0)
|
||||
{
|
||||
@ -2615,7 +2615,7 @@ static inline void efm32_epout_interrupt(FAR struct efm32_usbdev_s *priv)
|
||||
*/
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DAINT);
|
||||
daint = (regval & _USB_DAINT_OEP_MASK) >> _USB_DAINT_OEP_SHIFT;
|
||||
daint = (regval & _USB_DAINT_OUTEPINT_MASK) >> _USB_DAINT_OUTEPINT_SHIFT;
|
||||
|
||||
usbtrace(TRACE_DEVERROR(EFM32_TRACEERR_EPOUTUNEXPECTED),
|
||||
(uint16_t)regval);
|
||||
@ -2831,7 +2831,7 @@ static inline void efm32_epin_interrupt(FAR struct efm32_usbdev_s *priv)
|
||||
|
||||
daint = efm32_getreg(EFM32_USB_DAINT);
|
||||
daint &= efm32_getreg(EFM32_USB_DAINTMSK);
|
||||
daint &= _USB_DAINT_IEP_MASK;
|
||||
daint &= _USB_DAINT_INEPINT_MASK;
|
||||
|
||||
if (daint == 0)
|
||||
{
|
||||
@ -2849,7 +2849,7 @@ static inline void efm32_epin_interrupt(FAR struct efm32_usbdev_s *priv)
|
||||
usbtrace(TRACE_DEVERROR(EFM32_TRACEERR_EPINUNEXPECTED),
|
||||
(uint16_t)daint);
|
||||
|
||||
daint &= _USB_DAINT_IEP_MASK;
|
||||
daint &= _USB_DAINT_INEPINT_MASK;
|
||||
epno = 0;
|
||||
|
||||
while (daint)
|
||||
@ -3125,12 +3125,12 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
|
||||
/* Decode status fields */
|
||||
|
||||
epphy = (regval & _USB_GRXSTSD_EPNUM_MASK) >> _USB_GRXSTSD_EPNUM_SHIFT;
|
||||
epphy = (regval & _USB_GRXSTSP_CHEPNUM_MASK) >> _USB_GRXSTSP_CHEPNUM_SHIFT;
|
||||
privep = &priv->epout[epphy];
|
||||
|
||||
/* Handle the RX event according to the packet status field */
|
||||
|
||||
switch (regval & _USB_GRXSTSD_PKTSTS_MASK)
|
||||
switch (regval & _USB_GRXSTSP_PKTSTS_MASK)
|
||||
{
|
||||
/* Global OUT NAK. This indicate that the global OUT NAK bit has taken
|
||||
* effect.
|
||||
@ -3139,7 +3139,7 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
* Care.
|
||||
*/
|
||||
|
||||
case USB_GRXSTSD_PKTSTS_OUTNAK:
|
||||
case USB_GRXSTSP_PKTSTS_GOUTNAK:
|
||||
{
|
||||
usbtrace(TRACE_INTDECODE(EFM32_TRACEINTID_OUTNAK), 0);
|
||||
}
|
||||
@ -3151,10 +3151,10 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
* EPNUM = EPNUM on which the packet was received, DPID = Actual Data PID.
|
||||
*/
|
||||
|
||||
case USB_GRXSTSD_PKTSTS_OUTRECVD:
|
||||
case USB_GRXSTSP_PKTSTS_PKTRCV:
|
||||
{
|
||||
usbtrace(TRACE_INTDECODE(EFM32_TRACEINTID_OUTRECVD), epphy);
|
||||
bcnt = (regval & _USB_GRXSTSD_BCNT_MASK) >> _USB_GRXSTSD_BCNT_SHIFT;
|
||||
bcnt = (regval & _USB_GRXSTSP_BCNT_MASK) >> _USB_GRXSTSP_BCNT_SHIFT;
|
||||
if (bcnt > 0)
|
||||
{
|
||||
efm32_epout_receive(privep, bcnt);
|
||||
@ -3171,7 +3171,7 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
* which the data transfer is complete, DPID = Don't Care.
|
||||
*/
|
||||
|
||||
case USB_GRXSTSD_PKTSTS_OUTDONE:
|
||||
case USB_GRXSTSP_PKTSTS_XFERCOMPL:
|
||||
{
|
||||
usbtrace(TRACE_INTDECODE(EFM32_TRACEINTID_OUTDONE), epphy);
|
||||
}
|
||||
@ -3187,7 +3187,7 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
* DPID = Don't Care.
|
||||
*/
|
||||
|
||||
case USB_GRXSTSD_PKTSTS_SETUPDONE:
|
||||
case USB_GRXSTSP_PKTSTS_SETUPCOMPL:
|
||||
{
|
||||
usbtrace(TRACE_INTDECODE(EFM32_TRACEINTID_SETUPDONE), epphy);
|
||||
}
|
||||
@ -3199,7 +3199,7 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
* PKTSTS = SETUP, BCNT = 8, EPNUM = Control EP Num, DPID = D0.
|
||||
*/
|
||||
|
||||
case USB_GRXSTSD_PKTSTS_SETUPRECVD:
|
||||
case USB_GRXSTSP_PKTSTS_SETUPRCV:
|
||||
{
|
||||
uint16_t datlen;
|
||||
|
||||
@ -3249,7 +3249,7 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
default:
|
||||
{
|
||||
usbtrace(TRACE_DEVERROR(EFM32_TRACEERR_INVALIDPARMS),
|
||||
(regval & _USB_GRXSTSD_PKTSTS_MASK) >> _USB_GRXSTSD_PKTSTS_SHIFT);
|
||||
(regval & _USB_GRXSTSP_PKTSTS_MASK) >> _USB_GRXSTSP_PKTSTS_SHIFT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -3257,7 +3257,7 @@ static inline void efm32_rxinterrupt(FAR struct efm32_usbdev_s *priv)
|
||||
/* Enable the Rx Status Queue Level interrupt */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_GINTMSK);
|
||||
regval |= USB_GINTMSK_RXFLVL;
|
||||
regval |= USB_GINTMSK_RXFLVLMSK;
|
||||
efm32_putreg(regval, EFM32_USB_GINTMSK);
|
||||
}
|
||||
|
||||
@ -3705,7 +3705,7 @@ static void efm32_enablegonak(FAR struct efm32_ep_s *privep)
|
||||
/* Enable Global OUT NAK mode in the core. */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DCTL);
|
||||
regval |= USB_DCTL_SGONAK;
|
||||
regval |= USB_DCTL_SGOUTNAK;
|
||||
efm32_putreg(regval, EFM32_USB_DCTL);
|
||||
|
||||
#if 0
|
||||
@ -3726,7 +3726,7 @@ static void efm32_enablegonak(FAR struct efm32_ep_s *privep)
|
||||
* in OTGFS DCTL register?
|
||||
*/
|
||||
|
||||
while ((efm32_getreg(EFM32_USB_DCTL) & USB_DCTL_GONSTS) == 0);
|
||||
while ((efm32_getreg(EFM32_USB_DCTL) & USB_DCTL_GOUTNAKSTS) == 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -3745,7 +3745,7 @@ static void efm32_disablegonak(FAR struct efm32_ep_s *privep)
|
||||
/* Set the "Clear the Global OUT NAK bit" to disable global OUT NAK mode */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DCTL);
|
||||
regval |= USB_DCTL_CGONAK;
|
||||
regval |= USB_DCTL_CGOUTNAK;
|
||||
efm32_putreg(regval, EFM32_USB_DCTL);
|
||||
}
|
||||
|
||||
@ -3839,7 +3839,7 @@ static int efm32_epout_configure(FAR struct efm32_ep_s *privep, uint8_t eptype,
|
||||
/* Enable the interrupt for this endpoint */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DAINTMSK);
|
||||
regval |= USB_DAINT_OEP(privep->epphy);
|
||||
regval |= USB_DAINT_OUTEPINT(privep->epphy);
|
||||
efm32_putreg(regval, EFM32_USB_DAINTMSK);
|
||||
return OK;
|
||||
}
|
||||
@ -3877,19 +3877,19 @@ static int efm32_epin_configure(FAR struct efm32_ep_s *privep, uint8_t eptype,
|
||||
switch (maxpacket)
|
||||
{
|
||||
case 8:
|
||||
mpsiz = _USB_DIEP0CTL_MPS_8;
|
||||
mpsiz = _USB_DIEP0CTL_MPS_8B;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
mpsiz = _USB_DIEP0CTL_MPS_16;
|
||||
mpsiz = _USB_DIEP0CTL_MPS_16B;
|
||||
break;
|
||||
|
||||
case 32:
|
||||
mpsiz = _USB_DIEP0CTL_MPS_32;
|
||||
mpsiz = _USB_DIEP0CTL_MPS_32B;
|
||||
break;
|
||||
|
||||
case 64:
|
||||
mpsiz = _USB_DIEP0CTL_MPS_64;
|
||||
mpsiz = _USB_DIEP0CTL_MPS_64B;
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -3936,7 +3936,7 @@ static int efm32_epin_configure(FAR struct efm32_ep_s *privep, uint8_t eptype,
|
||||
/* Enable the interrupt for this endpoint */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DAINTMSK);
|
||||
regval |= USB_DAINT_IEP(privep->epphy);
|
||||
regval |= USB_DAINT_INEPINT(privep->epphy);
|
||||
efm32_putreg(regval, EFM32_USB_DAINTMSK);
|
||||
|
||||
return OK;
|
||||
@ -4066,7 +4066,7 @@ static void efm32_epout_disable(FAR struct efm32_ep_s *privep)
|
||||
/* Disable endpoint interrupts */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DAINTMSK);
|
||||
regval &= ~USB_DAINT_OEP(privep->epphy);
|
||||
regval &= ~USB_DAINT_OUTEPINT(privep->epphy);
|
||||
efm32_putreg(regval, EFM32_USB_DAINTMSK);
|
||||
|
||||
/* Cancel any queued read requests */
|
||||
@ -4161,7 +4161,7 @@ static void efm32_epin_disable(FAR struct efm32_ep_s *privep)
|
||||
/* Disable endpoint interrupts */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_DAINTMSK);
|
||||
regval &= ~USB_DAINT_IEP(privep->epphy);
|
||||
regval &= ~USB_DAINT_INEPINT(privep->epphy);
|
||||
efm32_putreg(regval, EFM32_USB_DAINTMSK);
|
||||
|
||||
/* Cancel any queued write requests */
|
||||
@ -4908,7 +4908,7 @@ static int efm32_pullup(struct usbdev_s *dev, bool enable)
|
||||
* register
|
||||
*/
|
||||
|
||||
regval &= ~USB_DCTL_SDIS;
|
||||
regval &= ~USB_DCTL_SFTDISCON;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -4916,7 +4916,7 @@ static int efm32_pullup(struct usbdev_s *dev, bool enable)
|
||||
* register
|
||||
*/
|
||||
|
||||
regval |= USB_DCTL_SDIS;
|
||||
regval |= USB_DCTL_SFTDISCON;
|
||||
}
|
||||
|
||||
efm32_putreg(regval, EFM32_USB_DCTL);
|
||||
@ -5193,7 +5193,7 @@ static void efm32_hwinitialize(FAR struct efm32_usbdev_s *priv)
|
||||
* interrupts will occur when the TxFIFO is truly empty (not just half full).
|
||||
*/
|
||||
|
||||
efm32_putreg(USB_GAHBCFG_TXFELVL, EFM32_USB_GAHBCFG);
|
||||
efm32_putreg(USB_GAHBCFG_NPTXFEMPLVL_EMPTY, EFM32_USB_GAHBCFG);
|
||||
|
||||
/* Common USB OTG core initialization */
|
||||
/* Reset after a PHY select and set Host mode. First, wait for AHB master
|
||||
@ -5366,23 +5366,23 @@ static void efm32_hwinitialize(FAR struct efm32_usbdev_s *priv)
|
||||
|
||||
/* Enable the interrupts in the INTMSK */
|
||||
|
||||
regval = (USB_GINTMSK_RXFLVL | USB_GINTMSK_USBSUSP | USB_GINTMSK_ENUMDNE |
|
||||
USB_GINTMSK_IEP | USB_GINTMSK_OEP | USB_GINTMSK_USBRST);
|
||||
regval = (USB_GINTMSK_RXFLVLMSK | USB_GINTMSK_USBSUSPMSK | USB_GINTMSK_ENUMDONEMSK |
|
||||
USB_GINTMSK_IEPINTMSK | USB_GINTMSK_OEPINTMSK | USB_GINTMSK_USBRSTMSK);
|
||||
|
||||
#ifdef CONFIG_USBDEV_ISOCHRONOUS
|
||||
regval |= (USB_GINTMSK_IISOIXFR | USB_GINTMSK_IISOOXFR);
|
||||
regval |= (USB_GINTMSK_INCOMPISOINMSK | USB_GINTMSK_INCOMPLPMSK);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USBDEV_SOFINTERRUPT
|
||||
regval |= USB_GINTMSK_SOF;
|
||||
regval |= USB_GINTMSK_SOFMSK;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USBDEV_VBUSSENSING
|
||||
regval |= (USB_GINTMSK_OTG | USB_GINTMSK_SRQ);
|
||||
regval |= (USB_GINTMSK_OTGINTMSK | USB_GINTMSK_SESSREQINTMSK);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DEBUG_USB
|
||||
regval |= USB_GINTMSK_MMIS;
|
||||
regval |= USB_GINTMSK_MODEMISMSK;
|
||||
#endif
|
||||
|
||||
efm32_putreg(regval, EFM32_USB_GINTMSK);
|
||||
@ -5393,7 +5393,7 @@ static void efm32_hwinitialize(FAR struct efm32_usbdev_s *priv)
|
||||
* empty (not just half full).
|
||||
*/
|
||||
|
||||
efm32_putreg(USB_GAHBCFG_GINTMSK | USB_GAHBCFG_TXFELVL,
|
||||
efm32_putreg(USB_GAHBCFG_GLBLINTRMSK | USB_GAHBCFG_NPTXFEMPLVL_EMPTY,
|
||||
EFM32_USB_GAHBCFG);
|
||||
}
|
||||
|
||||
|
@ -809,7 +809,7 @@ static void efm32_chan_configure(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
|
||||
/* Make sure host channel interrupts are enabled. */
|
||||
|
||||
efm32_modifyreg(EFM32_USB_GINTMSK, 0, USB_GINTMSK_HC);
|
||||
efm32_modifyreg(EFM32_USB_GINTMSK, 0, USB_GINTMSK_HCHINTMSK);
|
||||
|
||||
/* Program the HCCHAR register */
|
||||
|
||||
@ -2329,7 +2329,7 @@ static inline void efm32_gint_rxflvlisr(FAR struct efm32_usbhost_s *priv)
|
||||
/* Disable the RxFIFO non-empty interrupt */
|
||||
|
||||
intmsk = efm32_getreg(EFM32_USB_GINTMSK);
|
||||
intmsk &= ~USB_GINTMSK_RXFLVL;
|
||||
intmsk &= ~USB_GINTMSK_RXFLVLMSK;
|
||||
efm32_putreg(EFM32_USB_GINTMSK, intmsk);
|
||||
|
||||
/* Read and pop the next status from the Rx FIFO */
|
||||
@ -2402,7 +2402,7 @@ static inline void efm32_gint_rxflvlisr(FAR struct efm32_usbhost_s *priv)
|
||||
|
||||
/* Re-enable the RxFIFO non-empty interrupt */
|
||||
|
||||
intmsk |= USB_GINTMSK_RXFLVL;
|
||||
intmsk |= USB_GINTMSK_RXFLVLMSK;
|
||||
efm32_putreg(EFM32_USB_GINTMSK, intmsk);
|
||||
}
|
||||
|
||||
@ -2949,7 +2949,7 @@ static void efm32_gint_enable(void)
|
||||
/* Set the GINTMSK bit to unmask the interrupt */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_GAHBCFG);
|
||||
regval |= USB_GAHBCFG_GINTMSK;
|
||||
regval |= USB_GAHBCFG_GLBLINTRMSK;
|
||||
efm32_putreg(EFM32_USB_GAHBCFG, regval);
|
||||
}
|
||||
|
||||
@ -2960,7 +2960,7 @@ static void efm32_gint_disable(void)
|
||||
/* Clear the GINTMSK bit to mask the interrupt */
|
||||
|
||||
regval = efm32_getreg(EFM32_USB_GAHBCFG);
|
||||
regval &= ~USB_GAHBCFG_GINTMSK;
|
||||
regval &= ~USB_GAHBCFG_GLBLINTRMSK;
|
||||
efm32_putreg(EFM32_USB_GAHBCFG, regval);
|
||||
}
|
||||
|
||||
@ -3001,35 +3001,35 @@ static inline void efm32_hostinit_enable(void)
|
||||
/* Enable the host interrupts */
|
||||
/* Common interrupts:
|
||||
*
|
||||
* USB_GINTMSK_WKUP : Resume/remote wakeup detected interrupt
|
||||
* USB_GINTMSK_USBSUSP : USB suspend
|
||||
* USB_GINTMSK_WKUPINTMSK : Resume/remote wakeup detected interrupt
|
||||
* USB_GINTMSK_USBSUSPMSK : USB suspend
|
||||
*/
|
||||
|
||||
regval = (USB_GINTMSK_WKUP | USB_GINTMSK_USBSUSP);
|
||||
regval = (USB_GINTMSK_WKUPINTMSK | USB_GINTMSK_USBSUSPMSK);
|
||||
|
||||
/* If OTG were supported, we would need to enable the following as well:
|
||||
*
|
||||
* USB_GINTMSK_OTG : OTG interrupt
|
||||
* USB_GINTMSK_SRQ : Session request/new session detected interrupt
|
||||
* USB_GINTMSK_CIDSCHG : Connector ID status change
|
||||
* USB_GINTMSK_OTGINTMSK : OTG interrupt
|
||||
* USB_GINTMSK_SESSREQINTMSK : Session request/new session detected interrupt
|
||||
* USB_GINTMSK_CONIDSTSCHNGMSK : Connector ID status change
|
||||
*/
|
||||
|
||||
/* Host-specific interrupts
|
||||
*
|
||||
* USB_GINTMSK_SOF : Start of frame
|
||||
* USB_GINTMSK_RXFLVL : RxFIFO non-empty
|
||||
* USB_GINTMSK_IISOOXFR : Incomplete isochronous OUT transfer
|
||||
* USB_GINTMSK_HPRT : Host port interrupt
|
||||
* USB_GINTMSK_HC : Host channels interrupt
|
||||
* USB_GINTMSK_DISC : Disconnect detected interrupt
|
||||
* USB_GINTMSK_SOFMSK : Start of frame
|
||||
* USB_GINTMSK_RXFLVLMSK : RxFIFO non-empty
|
||||
* USB_GINTMSK_INCOMPLPMSK : Incomplete isochronous OUT transfer
|
||||
* USB_GINTMSK_PRTINTMSK : Host port interrupt
|
||||
* USB_GINTMSK_HCHINTMSK : Host channels interrupt
|
||||
* USB_GINTMSK_DISCONNINTMSK : Disconnect detected interrupt
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_EFM32_OTGFS_SOFINTR
|
||||
regval |= (USB_GINTMSK_SOF | USB_GINTMSK_RXFLVL | USB_GINTMSK_IISOOXFR |
|
||||
USB_GINTMSK_HPRT | USB_GINTMSK_HC | USB_GINTMSK_DISC);
|
||||
regval |= (USB_GINTMSK_SOFMSK | USB_GINTMSK_RXFLVLMSK | USB_GINTMSK_INCOMPLPMSK |
|
||||
USB_GINTMSK_PRTINTMSK | USB_GINTMSK_HCHINTMSK | USB_GINTMSK_DISCONNINTMSK);
|
||||
#else
|
||||
regval |= (USB_GINTMSK_RXFLVL | USB_GINTMSK_IPXFR | USB_GINTMSK_HPRT |
|
||||
USB_GINTMSK_HC | USB_GINTMSK_DISC);
|
||||
regval |= (USB_GINTMSK_RXFLVLMSK | USB_GINTMSK_IPXFR | USB_GINTMSK_PRTINTMSK |
|
||||
USB_GINTMSK_HCHINTMSK | USB_GINTMSK_DISCONNINTMSK);
|
||||
#endif
|
||||
efm32_putreg(EFM32_USB_GINTMSK, regval);
|
||||
}
|
||||
|
@ -970,7 +970,7 @@ int rwb_mediaremoved(FAR struct rwbuffer_s *rwb)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DRVR_READAHEAD
|
||||
if (rhmaxblocks > 0)
|
||||
if (rwb->rhmaxblocks > 0)
|
||||
{
|
||||
rwb_semtake(&rwb->rhsem);
|
||||
rwb_resetrhbuffer(rwb);
|
||||
|
@ -53,11 +53,14 @@ namespace std
|
||||
using ::fpos_t;
|
||||
using ::size_t;
|
||||
|
||||
// Operations on streams (FILE)
|
||||
|
||||
using ::clearerr;
|
||||
using ::fclose;
|
||||
using ::fflush;
|
||||
using ::feof;
|
||||
using ::ferror;
|
||||
using ::fileno;
|
||||
using ::fgetc;
|
||||
using ::fgetpos;
|
||||
using ::fgets;
|
||||
@ -71,8 +74,11 @@ namespace std
|
||||
using ::ftell;
|
||||
using ::fwrite;
|
||||
using ::gets;
|
||||
using ::gets_s;
|
||||
using ::ungetc;
|
||||
|
||||
// Operations on the stdout stream, buffers, paths, and the whole printf-family
|
||||
|
||||
using ::printf;
|
||||
using ::puts;
|
||||
using ::rename;
|
||||
@ -89,9 +95,17 @@ namespace std
|
||||
using ::vsnprintf;
|
||||
using ::vsscanf;
|
||||
|
||||
// Operations on file descriptors including:
|
||||
|
||||
using ::fdopen;
|
||||
using ::dprintf;
|
||||
using ::vdprintf;
|
||||
|
||||
// Operations on paths
|
||||
|
||||
using ::statfs;
|
||||
using ::tmpnam;
|
||||
using ::tempnam;
|
||||
}
|
||||
|
||||
#endif // __INCLUDE_CXX_CSTDIO
|
||||
|
||||
|
@ -49,10 +49,15 @@
|
||||
|
||||
namespace std
|
||||
{
|
||||
// Random number generation
|
||||
|
||||
using ::srand;
|
||||
using ::rand;
|
||||
|
||||
// Environment variable support
|
||||
|
||||
#ifndef CONFIG_DISABLE_ENIVRON
|
||||
using ::get_environ_ptr;
|
||||
using ::getenv;
|
||||
using ::putenv;
|
||||
using ::clearenv;
|
||||
@ -60,6 +65,8 @@ namespace std
|
||||
using ::unsetenv;
|
||||
#endif
|
||||
|
||||
// Process exit functions
|
||||
|
||||
using ::exit;
|
||||
using ::abort;
|
||||
#ifdef CONFIG_SCHED_ATEXIT
|
||||
@ -69,10 +76,22 @@ namespace std
|
||||
using ::on_exit;
|
||||
#endif
|
||||
|
||||
// String to binary conversions
|
||||
|
||||
using ::strtol;
|
||||
using ::strtoul;
|
||||
#ifdef CONFIG_HAVE_LONG_LONG
|
||||
using ::strtoll;
|
||||
using ::strtoull;
|
||||
#endif
|
||||
using ::strtod;
|
||||
|
||||
// Binary to string conversions
|
||||
|
||||
using ::itoa;
|
||||
|
||||
// Memory Management
|
||||
|
||||
using ::malloc;
|
||||
using ::free;
|
||||
using ::realloc;
|
||||
@ -80,6 +99,17 @@ namespace std
|
||||
using ::zalloc;
|
||||
using ::calloc;
|
||||
using ::mallinfo;
|
||||
|
||||
// Misc.
|
||||
|
||||
using ::abs;
|
||||
using ::labs;
|
||||
#ifdef CONFIG_HAVE_LONG_LONG
|
||||
using ::llabs;
|
||||
#endif
|
||||
using ::mktemp;
|
||||
using ::mkstemp;
|
||||
using ::qsort;
|
||||
}
|
||||
|
||||
#endif // __INCLUDE_CXX_CSTDLIB
|
||||
|
@ -182,8 +182,8 @@ long int labs(long int j);
|
||||
#ifdef CONFIG_HAVE_LONG_LONG
|
||||
long long int llabs(long long int j);
|
||||
#endif
|
||||
int mktemp(FAR char *template);
|
||||
int mkstemp(FAR char *template);
|
||||
int mktemp(FAR char *path_template);
|
||||
int mkstemp(FAR char *path_template);
|
||||
|
||||
/* Sorting */
|
||||
|
||||
|
@ -195,18 +195,18 @@ static void copy_base62(FAR char *dest, int len)
|
||||
*
|
||||
* Description:
|
||||
* The mkstemp() function replaces the contents of the string pointed to
|
||||
* by template by a unique filename, and returns a file descriptor for the
|
||||
* file open for reading and writing. The function thus prevents any
|
||||
* possible race condition between testing whether the file exists and
|
||||
* opening it for use. The string in template should look like a filename
|
||||
* with six trailing 'X' s; mkstemp() replaces each 'X' with a character
|
||||
* from the portable filename character set. The characters are chosen
|
||||
* such that the resulting name does not duplicate the name of an existing
|
||||
* file at the time of a call to mkstemp().
|
||||
* by path_template by a unique filename, and returns a file descriptor
|
||||
* for the file open for reading and writing. The function thus prevents
|
||||
* any possible race condition between testing whether the file exists and
|
||||
* opening it for use. The string in path_template should look like a
|
||||
* filename with six trailing 'X' s; mkstemp() replaces each 'X' with a
|
||||
* character from the portable filename character set. The characters are
|
||||
* chosen such that the resulting name does not duplicate the name of an
|
||||
* existing file at the time of a call to mkstemp().
|
||||
*
|
||||
* Input Parameters:
|
||||
* template - The base file name that will be modified to produce the
|
||||
* unique file name. This must be a full path beginning with /tmp.
|
||||
* path_template - The base file name that will be modified to produce
|
||||
* the unique file name. This must be a full path beginning with /tmp.
|
||||
* This function will modify only the first XXXXXX characters within
|
||||
* that full path.
|
||||
*
|
||||
@ -217,7 +217,7 @@ static void copy_base62(FAR char *dest, int len)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int mkstemp(FAR char *template)
|
||||
int mkstemp(FAR char *path_template)
|
||||
{
|
||||
uint8_t base62[MAX_XS];
|
||||
uint32_t retries;
|
||||
@ -229,12 +229,12 @@ int mkstemp(FAR char *template)
|
||||
|
||||
/* Count the number of X's at the end of the template */
|
||||
|
||||
xptr = strchr(template, 'X');
|
||||
xptr = strchr(path_template, 'X');
|
||||
if (!xptr)
|
||||
{
|
||||
/* No Xs? There should always really be 6 */
|
||||
|
||||
return open(template, O_RDWR | O_CREAT | O_EXCL, 0666);
|
||||
return open(path_template, O_RDWR | O_CREAT | O_EXCL, 0666);
|
||||
}
|
||||
|
||||
/* There is at least one.. count all of them */
|
||||
@ -279,7 +279,7 @@ int mkstemp(FAR char *template)
|
||||
* directories
|
||||
*/
|
||||
|
||||
fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0666);
|
||||
fd = open(path_template, O_RDWR | O_CREAT | O_EXCL, 0666);
|
||||
if (fd >= 0)
|
||||
{
|
||||
/* We have it... return the file descriptor */
|
||||
|
@ -65,9 +65,9 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int mktemp(FAR char *template)
|
||||
int mktemp(FAR char *path_template)
|
||||
{
|
||||
int fd = mkstemp(template);
|
||||
int fd = mkstemp(path_template);
|
||||
if (fd < 0)
|
||||
{
|
||||
return ERROR;
|
||||
|
Loading…
Reference in New Issue
Block a user