Mercurial > ecos
changeset 2223:41234426f916
* src/usbs_at91_data.cxx: Change the initialization priority. The
USB tty driver is initialized at priority CYG_INIT_IO, so the USB
device has to be initialized before that.
* src/usbs_at91.c: Rework pullup and power dectect to use the AT91
GPIO macros.
| author | asl |
|---|---|
| date | Fri, 02 Jun 2006 18:46:13 +0000 |
| parents | 60a553e4f050 |
| children | de2bef46557a |
| files | packages/devs/usb/at91/current/ChangeLog packages/devs/usb/at91/current/cdl/usbs_at91.cdl packages/devs/usb/at91/current/src/usbs_at91.c packages/devs/usb/at91/current/src/usbs_at91_data.cxx |
| diffstat | 4 files changed, 43 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/devs/usb/at91/current/ChangeLog +++ b/packages/devs/usb/at91/current/ChangeLog @@ -1,3 +1,14 @@ +2006-05-25 Andrew Lunn <andrew.lunn@ascom.ch> + + * src/usbs_at91_data.cxx: Change the initialization priority. The + USB tty driver is initialized at priority CYG_INIT_IO, so the USB + device has to be initialized before that. + +2006-05-19 Andrew Lunn <andrew.lunn@ascom.ch> + + * src/usbs_at91.c: Rework pullup and power dectect to use the AT91 + GPIO macros. + 2006-05-07 Andrew Lunn <andrew.lunn@ascom.ch> * Included into eCos anonymous CVS.
--- a/packages/devs/usb/at91/current/cdl/usbs_at91.cdl +++ b/packages/devs/usb/at91/current/cdl/usbs_at91.cdl @@ -84,6 +84,8 @@ cdl_package CYGPKG_DEVS_USB_AT91 { } active_if CYGINT_DEVS_USB_AT91_HAS_USB + implements CYGHWR_IO_USB_SLAVE_OUT_ENDPOINTS + implements CYGHWR_IO_USB_SLAVE_IN_ENDPOINTS compile usbs_at91.c compile -library=libextras.a usbs_at91_data.cxx @@ -91,15 +93,14 @@ cdl_package CYGPKG_DEVS_USB_AT91 { Enable support for endpoint 0. If this support is disabled then the entire USB port is unusable." - cdl_option CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_PIN { + cdl_option CYGDAT_DEVS_USB_AT91_GPIO_SET_PULLUP_PIN { display "PIO-Pin who controls the pullup resistor" flavor data - default_value 16 - legal_values { 0 to 32 } + default_value { "AT91_GPIO_PA16" } description " - Every pin from the PIO is able to do it. If you don't - need a pin because your HW has the pullup fixed wired - then select 32." + Every GPIO pin is able to do it. If you don't need + a pin because your HW has the pullup fixed wired + then select NONE" } cdl_option CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_INVERTED { @@ -111,14 +112,13 @@ cdl_package CYGPKG_DEVS_USB_AT91 { be inverted. ie VDD is active, VCC is inactive." } - cdl_option CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_PIN { + cdl_option CYGDAT_DEVS_USB_AT91_GPIO_READ_POWER_PIN { display "PIO-Pin who see the USB-Power" flavor data - default_value 13 - legal_values { 0 to 32 } + default_value { "AT91_GPIO_PA13"} description " - Every pin from the PIO is able to do it. If you don't - need a pin select 32." + Every GPIO pin is able to do it. If you don't need + a pin then select NONE" } cdl_option CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_INVERTED {
--- a/packages/devs/usb/at91/current/src/usbs_at91.c +++ b/packages/devs/usb/at91/current/src/usbs_at91.c @@ -277,19 +277,17 @@ static void usbs_at91_set_pullup (bool set) { -#if CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_PIN <= 31 +#ifndef CYGDAT_DEVS_USB_AT91_GPIO_SET_PULLUP_PIN_NONE if ( -#ifdef CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_INVERTED +#ifdef CYGNUM_DEVS_USB_AT91_GPIO_SET_PULLUP_INVERTED !set #else set #endif ) { - HAL_WRITE_UINT32 (AT91_PIO + AT91_PIO_SODR, - (1 << CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_PIN)); + HAL_ARM_AT91_GPIO_RESET(CYGDAT_DEVS_USB_AT91_GPIO_SET_PULLUP_PIN); } else { - HAL_WRITE_UINT32 (AT91_PIO + AT91_PIO_CODR, - (1 << CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_PIN)); + HAL_ARM_AT91_GPIO_SET(CYGDAT_DEVS_USB_AT91_GPIO_SET_PULLUP_PIN); } #endif } @@ -297,14 +295,15 @@ usbs_at91_set_pullup (bool set) /* Is the USB powered? */ bool usbs_at91_read_power (void) -{ -#if CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_PIN <= 31 -#ifdef CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_INVERTED - return BITS_ARE_CLEARED ((cyg_addrword_t) (AT91_PIO + AT91_PIO_PDSR), - (1 << CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_PIN)); +{ +#ifndef CYGDAT_DEVS_USB_AT91_GPIO_READ_POWER_PIN_NONE + cyg_bool state; + + HAL_ARM_AT91_GPIO_GET(CYGDAT_DEVS_USB_AT91_GPIO_READ_POWER_PIN, state); +#ifdef CYGNUM_DEVS_USB_AT91_GPIO_READ_POWER_INVERTED + return !state; #else - return BITS_ARE_SET ((cyg_addrword_t) (AT91_PIO + AT91_PIO_PDSR), - (1 << CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_PIN)); + return state; #endif #endif return true; @@ -1310,14 +1309,14 @@ usbs_at91_init (void) HAL_WRITE_UINT32 (AT91_PMC + AT91_PMC_PCER, AT91_PMC_PCER_UDP); usbs_at91_set_pullup (false); - HAL_WRITE_UINT32 (AT91_PIO + AT91_PIO_PER, - (1 << CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_PIN) | - (1 << CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_PIN)); - HAL_WRITE_UINT32 (AT91_PIO + AT91_PIO_OER, - (1 << CYGNUM_DEVS_USB_AT91_PIO_SET_PULLUP_PIN)); - HAL_WRITE_UINT32 (AT91_PIO + AT91_PIO_ODR, - (1 << CYGNUM_DEVS_USB_AT91_PIO_READ_POWER_PIN)); - +#ifndef CYGDAT_DEVS_USB_AT91_GPIO_SET_PULLUP_PIN_NONE + HAL_ARM_AT91_GPIO_CFG_DIRECTION(CYGDAT_DEVS_USB_AT91_GPIO_SET_PULLUP_PIN, + AT91_PIN_OUT); +#endif +#ifndef CYGDAT_DEVS_USB_AT91_GPIO_READ_POWER_PIN_NONE + HAL_ARM_AT91_GPIO_CFG_DIRECTION(CYGDAT_DEVS_USB_AT91_GPIO_READ_POWER_PIN, + AT91_PIN_IN); +#endif usbs_at91_handle_reset (); cyg_drv_interrupt_create (CYGNUM_HAL_INTERRUPT_UDP,
--- a/packages/devs/usb/at91/current/src/usbs_at91_data.cxx +++ b/packages/devs/usb/at91/current/src/usbs_at91_data.cxx @@ -78,7 +78,7 @@ public: } }; -static usbs_at91_initialization CYGBLD_ATTRIB_INIT_PRI(CYG_INIT_IO) +static usbs_at91_initialization CYGBLD_ATTRIB_INIT_BEFORE(CYG_INIT_IO) usbs_at91_init_object; #endif
