From 018f15a16bc2eda681e448a05efc2657e658d94f Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 12 Nov 2014 10:43:29 -0600 Subject: EFM32: More USB register name corrections. Still incomplete --- nuttx/arch/arm/src/efm32/chip/efm32_usb.h | 29 +++++++++++++----- nuttx/arch/arm/src/efm32/efm32_usbdev.c | 50 +++++++++++++++---------------- nuttx/arch/arm/src/efm32/efm32_usbhost.c | 2 +- 3 files changed, 47 insertions(+), 34 deletions(-) (limited to 'nuttx/arch') diff --git a/nuttx/arch/arm/src/efm32/chip/efm32_usb.h b/nuttx/arch/arm/src/efm32/chip/efm32_usb.h index 8844d0d95..6e11318f1 100644 --- a/nuttx/arch/arm/src/efm32/chip/efm32_usb.h +++ b/nuttx/arch/arm/src/efm32/chip/efm32_usb.h @@ -96,11 +96,12 @@ #define EFM32_USB_GRXSTSP_OFFSET 0x3c020 /* Receive Status Read and Pop Register */ #define EFM32_USB_GRXFSIZ_OFFSET 0x3c024 /* Receive FIFO Size Register */ #define EFM32_USB_GNPTXFSIZ_OFFSET 0x3c028 /* Non-periodic Transmit FIFO Size Register */ +#define EFM32_USB_DIEPTXF0_OFFSET 0x3c028 /* Endpoint 0 Transmit FIFO size */ #define EFM32_USB_GNPTXSTS_OFFSET 0x3c02c /* Non-periodic Transmit FIFO/Queue Status Register */ #define EFM32_USB_GDFIFOCFG_OFFSET 0x3c05c /* Global DFIFO Configuration Register */ #define EFM32_USB_HPTXFSIZ_OFFSET 0x3c100 /* Host Periodic Transmit FIFO Size Register */ -#define EFM32_USB_DIEPTXF_OFFSET(n) (0x3c104 + ((n) << 2)) +#define EFM32_USB_DIEPTXF_OFFSET(n) (0x3c104 + (((n)-1) << 2)) #define EFM32_USB_DIEPTXF1_OFFSET 0x3c104 /* Device IN Endpoint Transmit FIFO 1 Size Register */ #define EFM32_USB_DIEPTXF2_OFFSET 0x3c108 /* Device IN Endpoint Transmit FIFO 2 Size Register */ #define EFM32_USB_DIEPTXF3_OFFSET 0x3c10c /* Device IN Endpoint Transmit FIFO 3 Size Register */ @@ -299,17 +300,18 @@ #define EFM32_USB_GRXSTSP (EFM32_USB_BASE+EFM32_USB_GRXSTSP_OFFSET) #define EFM32_USB_GRXFSIZ (EFM32_USB_BASE+EFM32_USB_GRXFSIZ_OFFSET) #define EFM32_USB_GNPTXFSIZ (EFM32_USB_BASE+EFM32_USB_GNPTXFSIZ_OFFSET) +#define EFM32_USB_DIEPTXF0 (EFM32_USB_BASE+EFM32_USB_DIEPTXF0_OFFSET) #define EFM32_USB_GNPTXSTS (EFM32_USB_BASE+EFM32_USB_GNPTXSTS_OFFSET) #define EFM32_USB_GDFIFOCFG (EFM32_USB_BASE+EFM32_USB_GDFIFOCFG_OFFSET) #define EFM32_USB_HPTXFSIZ (EFM32_USB_BASE+EFM32_USB_HPTXFSIZ_OFFSET) -#define EFM32_USB_DIEPTXF_BASE(n) (EFM32_USB_BASE+EFM32_USB_DIEPTXF_OFFSET(n)) -#define EFM32_USB_DIEPTXF1_BASE (EFM32_USB_BASE+EFM32_USB_DIEPTXF1_OFFSET) -#define EFM32_USB_DIEPTXF2_BASE (EFM32_USB_BASE+EFM32_USB_DIEPTXF2_OFFSET) -#define EFM32_USB_DIEPTXF3_BASE (EFM32_USB_BASE+EFM32_USB_DIEPTXF3_OFFSET) -#define EFM32_USB_DIEPTXF4_BASE (EFM32_USB_BASE+EFM32_USB_DIEPTXF4_OFFSET) -#define EFM32_USB_DIEPTXF5_BASE (EFM32_USB_BASE+EFM32_USB_DIEPTXF5_OFFSET) -#define EFM32_USB_DIEPTXF6_BASE (EFM32_USB_BASE+EFM32_USB_DIEPTXF6_OFFSET) +#define EFM32_USB_DIEPTXF(n) (EFM32_USB_BASE+EFM32_USB_DIEPTXF_OFFSET(n)) +#define EFM32_USB_DIEPTXF1 (EFM32_USB_BASE+EFM32_USB_DIEPTXF1_OFFSET) +#define EFM32_USB_DIEPTXF2 (EFM32_USB_BASE+EFM32_USB_DIEPTXF2_OFFSET) +#define EFM32_USB_DIEPTXF3 (EFM32_USB_BASE+EFM32_USB_DIEPTXF3_OFFSET) +#define EFM32_USB_DIEPTXF4 (EFM32_USB_BASE+EFM32_USB_DIEPTXF4_OFFSET) +#define EFM32_USB_DIEPTXF5 (EFM32_USB_BASE+EFM32_USB_DIEPTXF5_OFFSET) +#define EFM32_USB_DIEPTXF6 (EFM32_USB_BASE+EFM32_USB_DIEPTXF6_OFFSET) #define EFM32_USB_HCFG (EFM32_USB_BASE+EFM32_USB_HCFG_OFFSET) #define EFM32_USB_HFIR (EFM32_USB_BASE+EFM32_USB_HFIR_OFFSET) @@ -1324,6 +1326,17 @@ #define _USB_GNPTXFSIZ_NPTXFINEPTXF0DEP_DEFAULT 0x00000200UL /* Mode DEFAULT for USB_GNPTXFSIZ */ #define USB_GNPTXFSIZ_NPTXFINEPTXF0DEP_DEFAULT (_USB_GNPTXFSIZ_NPTXFINEPTXF0DEP_DEFAULT << 16) /* Shifted mode DEFAULT for USB_GNPTXFSIZ */ +/* Bit fields for USB DIEPTXF0 */ + +#define _USB_DIEPTXF0_TXFSTADDR_SHIFT 0 /* Shift value for USB_NPTXFSTADDR */ +#define _USB_DIEPTXF0_TXFSTADDR_MASK 0x3FFUL /* Bit mask for USB_NPTXFSTADDR */ +#define _USB_DIEPTXF0_TXFSTADDR_DEFAULT 0x00000200UL /* Mode DEFAULT for USB_GNPTXFSIZ */ +#define USB_DIEPTXF0_TXFSTADDR_DEFAULT (_USB_DIEPTXF0_TXFSTADDR_DEFAULT << 0) /* Shifted mode DEFAULT for USB_GNPTXFSIZ */ +#define _USB_DIEPTXF0_TXFINEPTXF0DEP_SHIFT 16 /* Shift value for USB_NPTXFINEPTXF0DEP */ +#define _USB_DIEPTXF0_TXFINEPTXF0DEP_MASK 0xFFFF0000UL /* Bit mask for USB_NPTXFINEPTXF0DEP */ +#define _USB_DIEPTXF0_TXFINEPTXF0DEP_DEFAULT 0x00000200UL /* Mode DEFAULT for USB_GNPTXFSIZ */ +#define USB_DIEPTXF0_TXFINEPTXF0DEP_DEFAULT (_USB_DIEPTXF0_TXFINEPTXF0DEP_DEFAULT << 16) /* Shifted mode DEFAULT for USB_GNPTXFSIZ */ + /* Bit fields for USB GNPTXSTS */ #define _USB_GNPTXSTS_RESETVALUE 0x00080200UL /* Default value for USB_GNPTXSTS */ diff --git a/nuttx/arch/arm/src/efm32/efm32_usbdev.c b/nuttx/arch/arm/src/efm32/efm32_usbdev.c index 761bf1771..06724ec9a 100644 --- a/nuttx/arch/arm/src/efm32/efm32_usbdev.c +++ b/nuttx/arch/arm/src/efm32/efm32_usbdev.c @@ -1,5 +1,5 @@ /******************************************************************************* - * arch/arm/src/efm32/efm32_otgfsdev.c + * arch/arm/src/efm32/efm32_usbdev.c * * Copyright (C) 2014 Gregory Nutt. All rights reserved. * Author: Gregory Nutt @@ -3351,7 +3351,7 @@ static inline void efm32_isocininterrupt(FAR struct efm32_usbdev_s *priv) */ efm32_req_complete(privep, -EIO); -#warning "Will clear USB_DIEPCTL_USBAEP too" +#warning "Will clear USB_DIEPCTL_USBACTEP too" efm32_epin_disable(privep); break; } @@ -3433,7 +3433,7 @@ static inline void efm32_isocoutinterrupt(FAR struct efm32_usbdev_s *priv) */ efm32_req_complete(privep, -EIO); -#warning "Will clear USB_DOEPCTL_USBAEP too" +#warning "Will clear USB_DOEPCTL_USBACTEP too" efm32_epout_disable(privep); break; } @@ -3816,17 +3816,17 @@ static int efm32_epout_configure(FAR struct efm32_ep_s *privep, uint8_t eptype, regaddr = EFM32_USB_DOEPCTL(privep->epphy); regval = efm32_getreg(regaddr); - if ((regval & USB_DOEPCTL_USBAEP) == 0) + if ((regval & USB_DOEPCTL_USBACTEP) == 0) { if (regval & USB_DOEPCTL_NAKSTS) { regval |= USB_DOEPCTL_CNAK; } - regval &= ~(_USB_DOEPCTL_MPS_MASK | _USB_DOEPCTL_EPTYP_MASK); + regval &= ~(_USB_DOEPCTL_MPS_MASK | _USB_DOEPCTL_EPTYPE_MASK); regval |= mpsiz; - regval |= (eptype << _USB_DOEPCTL_EPTYP_SHIFT); - regval |= (USB_DOEPCTL_SD0PID | USB_DOEPCTL_USBAEP); + regval |= (eptype << _USB_DOEPCTL_EPTYPE_SHIFT); + regval |= (USB_DOEPCTL_SETD0PIDEF | USB_DOEPCTL_USBACTEP); efm32_putreg(regval, regaddr); /* Save the endpoint configuration */ @@ -3912,18 +3912,18 @@ static int efm32_epin_configure(FAR struct efm32_ep_s *privep, uint8_t eptype, regaddr = EFM32_USB_DIEPCTL(privep->epphy); regval = efm32_getreg(regaddr); - if ((regval & USB_DIEPCTL_USBAEP) == 0) + if ((regval & USB_DIEPCTL_USBACTEP) == 0) { if (regval & USB_DIEPCTL_NAKSTS) { regval |= USB_DIEPCTL_CNAK; } - regval &= ~(_USB_DIEPCTL_MPS_MASK | _USB_DIEPCTL_EPTYP_MASK | _USB_DIEPCTL_TXFNUM_MASK); + regval &= ~(_USB_DIEPCTL_MPS_MASK | _USB_DIEPCTL_EPTYPE_MASK | _USB_DIEPCTL_TXFNUM_MASK); regval |= mpsiz; - regval |= (eptype << _USB_DIEPCTL_EPTYP_SHIFT); + regval |= (eptype << _USB_DIEPCTL_EPTYPE_SHIFT); regval |= (eptype << _USB_DIEPCTL_TXFNUM_SHIFT); - regval |= (USB_DIEPCTL_SD0PID | USB_DIEPCTL_USBAEP); + regval |= (USB_DIEPCTL_SETD0PIDEF | USB_DIEPCTL_USBACTEP); efm32_putreg(regval, regaddr); /* Save the endpoint configuration */ @@ -4037,7 +4037,7 @@ static void efm32_epout_disable(FAR struct efm32_ep_s *privep) regaddr = EFM32_USB_DOEPCTL(privep->epphy); regval = efm32_getreg(regaddr); - regval &= ~USB_DOEPCTL_USBAEP; + regval &= ~USB_DOEPCTL_USBACTEP; regval |= (USB_DOEPCTL_EPDIS | USB_DOEPCTL_SNAK); efm32_putreg(regval, regaddr); @@ -4098,7 +4098,7 @@ static void efm32_epin_disable(FAR struct efm32_ep_s *privep) regaddr = EFM32_USB_DIEPCTL(privep->epphy); regval = efm32_getreg(regaddr); - if ((regval & USB_DIEPCTL_USBAEP) == 0) + if ((regval & USB_DIEPCTL_USBACTEP) == 0) { return; } @@ -4118,7 +4118,7 @@ static void efm32_epin_disable(FAR struct efm32_ep_s *privep) regaddr = EFM32_USB_DIEPCTL(privep->epphy); regval = efm32_getreg(regaddr); - regval &= ~USB_DIEPCTL_USBAEP; + regval &= ~USB_DIEPCTL_USBACTEP; regval |= (USB_DIEPCTL_EPDIS | USB_DIEPCTL_SNAK); efm32_putreg(regval, regaddr); @@ -4139,7 +4139,7 @@ static void efm32_epin_disable(FAR struct efm32_ep_s *privep) flags = irqsave(); regaddr = EFM32_USB_DIEPCTL(privep->epphy); regval = efm32_getreg(regaddr); - regval &= ~USB_DIEPCTL_USBAEP; + regval &= ~USB_DIEPCTL_USBACTEP; regval |= (USB_DIEPCTL_EPDIS | USB_DIEPCTL_SNAK); efm32_putreg(regval, regaddr); @@ -4589,7 +4589,7 @@ static int efm32_ep_clrstall(FAR struct efm32_ep_s *privep) regaddr = EFM32_USB_DIEPCTL(privep->epphy); stallbit = USB_DIEPCTL_STALL; - data0bit = USB_DIEPCTL_SD0PID; + data0bit = USB_DIEPCTL_SETD0PIDEF; } else { @@ -4597,7 +4597,7 @@ static int efm32_ep_clrstall(FAR struct efm32_ep_s *privep) regaddr = EFM32_USB_DOEPCTL(privep->epphy); stallbit = USB_DOEPCTL_STALL; - data0bit = USB_DOEPCTL_SD0PID; + data0bit = USB_DOEPCTL_SETD0PIDEF; } /* Clear the stall bit */ @@ -5272,29 +5272,29 @@ static void efm32_hwinitialize(FAR struct efm32_usbdev_s *priv) /* EP0 TX */ address = EFM32_RXFIFO_WORDS; - regval = (address << _USB_DIEPTXF0_TX0FD_SHIFT) | - (EFM32_EP0_TXFIFO_WORDS << _USB_DIEPTXF0_TX0FSA_SHIFT); + regval = (address << _USB_DIEPTXF0_TXFSTADDR_SHIFT) | + (EFM32_EP0_TXFIFO_WORDS << _USB_DIEPTXF0_TXFINEPTXF0DEP_SHIFT); efm32_putreg(regval, EFM32_USB_DIEPTXF0); /* EP1 TX */ address += EFM32_EP0_TXFIFO_WORDS; - regval = (address << _USB_DIEPTXF_INEPTXSA_SHIFT) | - (EFM32_EP1_TXFIFO_WORDS << _USB_DIEPTXF_INEPTXFD_SHIFT); + regval = (address << _USB_DIEPTXF1_INEPNTXFSTADDR_SHIFT) | + (EFM32_EP1_TXFIFO_WORDS << _USB_DIEPTXF1_INEPNTXFDEP_SHIFT); efm32_putreg(regval, EFM32_USB_DIEPTXF1); /* EP2 TX */ address += EFM32_EP1_TXFIFO_WORDS; - regval = (address << _USB_DIEPTXF_INEPTXSA_SHIFT) | - (EFM32_EP2_TXFIFO_WORDS << _USB_DIEPTXF_INEPTXFD_SHIFT); + regval = (address << _USB_DIEPTXF2_INEPNTXFSTADDR_SHIFT) | + (EFM32_EP2_TXFIFO_WORDS << _USB_DIEPTXF2_INEPNTXFDEP_SHIFT); efm32_putreg(regval, EFM32_USB_DIEPTXF2); /* EP3 TX */ address += EFM32_EP2_TXFIFO_WORDS; - regval = (address << _USB_DIEPTXF_INEPTXSA_SHIFT) | - (EFM32_EP3_TXFIFO_WORDS << _USB_DIEPTXF_INEPTXFD_SHIFT); + regval = (address << _USB_DIEPTXF3_INEPNTXFSTADDR_SHIFT) | + (EFM32_EP3_TXFIFO_WORDS << _USB_DIEPTXF3_INEPNTXFDEP_SHIFT); efm32_putreg(regval, EFM32_USB_DIEPTXF3); /* Flush the FIFOs */ diff --git a/nuttx/arch/arm/src/efm32/efm32_usbhost.c b/nuttx/arch/arm/src/efm32/efm32_usbhost.c index 9dc68ac2f..3d0a78433 100644 --- a/nuttx/arch/arm/src/efm32/efm32_usbhost.c +++ b/nuttx/arch/arm/src/efm32/efm32_usbhost.c @@ -1,5 +1,5 @@ /******************************************************************************* - * arch/arm/src/efm32/efm32_otgfshost.c + * arch/arm/src/efm32/efm32_usbhost.c * * Copyright (C) 2014 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt -- cgit v1.2.3