diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/SOURCES | 22 | ||||
-rw-r--r-- | firmware/export/pp5020.h | 8 | ||||
-rw-r--r-- | firmware/target/arm/ipod/usb-target.h | 24 | ||||
-rw-r--r-- | firmware/target/arm/iriver/h10/usb-h10.c | 58 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/usb-e200.c | 39 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/usb-target.h | 25 | ||||
-rw-r--r-- | firmware/target/arm/tatung/tpj1022/usb-target.h | 27 | ||||
-rw-r--r-- | firmware/target/arm/tatung/tpj1022/usb-tpj1022.c | 107 | ||||
-rw-r--r-- | firmware/target/arm/usb-pp.c (renamed from firmware/target/arm/ipod/usb-ipod.c) | 73 | ||||
-rw-r--r-- | firmware/target/arm/usb-target.h | 128 |
10 files changed, 190 insertions, 321 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES index 386d3707c4..6a4f172e47 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES @@ -331,7 +331,7 @@ target/arm/sandisk/sansa-e200/ata-e200.c target/arm/sandisk/sansa-e200/lcd-e200.c target/arm/sandisk/sansa-e200/adc-e200.c target/arm/sandisk/sansa-e200/backlight-e200.c -target/arm/sandisk/sansa-e200/usb-e200.c +target/arm/usb-pp.c target/arm/sandisk/sansa-e200/button-e200.c target/arm/sandisk/sansa-e200/power-e200.c target/arm/i2s-pp.c @@ -416,7 +416,7 @@ target/arm/iriver/h10/backlight-h10.c target/arm/iriver/h10/button-h10.c target/arm/iriver/h10/lcd-h10_20gb.c target/arm/iriver/h10/power-h10.c -target/arm/iriver/h10/usb-h10.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IRIVER_H10 */ @@ -430,7 +430,7 @@ target/arm/iriver/h10/backlight-h10.c target/arm/iriver/h10/button-h10.c target/arm/iriver/h10/lcd-h10_5gb.c target/arm/iriver/h10/power-h10.c -target/arm/iriver/h10/usb-h10.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IRIVER_H10_5GB */ @@ -460,7 +460,7 @@ target/arm/tatung/tpj1022/backlight-tpj1022.c target/arm/tatung/tpj1022/button-tpj1022.c target/arm/tatung/tpj1022/lcd-tpj1022.c target/arm/tatung/tpj1022/power-tpj1022.c -target/arm/tatung/tpj1022/usb-tpj1022.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* ELIO_TPJ1022 */ @@ -475,7 +475,7 @@ target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-4g_color.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c -target/arm/ipod/usb-ipod.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IPOD_4G */ @@ -490,7 +490,7 @@ target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-4g_color.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c -target/arm/ipod/usb-ipod.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IPOD_COLOR */ @@ -505,7 +505,7 @@ target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-nano_video.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c -target/arm/ipod/usb-ipod.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IPOD_NANO */ @@ -520,7 +520,7 @@ target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-nano_video.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c -target/arm/ipod/usb-ipod.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IPOD_VIDEO */ @@ -535,7 +535,7 @@ target/arm/ipod/adc-ipod.c target/arm/ipod/3g/backlight-3g.c target/arm/ipod/3g/button-3g.c target/arm/ipod/power-ipod.c -target/arm/ipod/usb-ipod.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IPOD_3G */ @@ -550,7 +550,7 @@ target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-mini1g_mini2g.c target/arm/ipod/button-mini1g.c target/arm/ipod/power-ipod.c -target/arm/ipod/usb-ipod.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IPOD_MINI */ @@ -565,7 +565,7 @@ target/arm/ipod/adc-ipod.c target/arm/ipod/backlight-mini1g_mini2g.c target/arm/ipod/button-clickwheel.c target/arm/ipod/power-ipod.c -target/arm/ipod/usb-ipod.c +target/arm/usb-pp.c #endif /* SIMULATOR */ #endif /* IPOD_MINI2G */ diff --git a/firmware/export/pp5020.h b/firmware/export/pp5020.h index 37d8882519..cbae083913 100644 --- a/firmware/export/pp5020.h +++ b/firmware/export/pp5020.h @@ -126,6 +126,11 @@ #define DEV_EN (*(volatile unsigned long *)(0x6000600c)) #define DEV_SYSTEM 0x4 +#define DEV_USB 0x400000 + +#define DEV_INIT (*(volatile unsigned long *)(0x70000020)) + +#define INIT_USB 0x80000000 #define TIMER1_CFG (*(volatile unsigned long *)(0x60005000)) #define TIMER1_VAL (*(volatile unsigned long *)(0x60005004)) @@ -158,9 +163,6 @@ #define SER1_MASK (1 << (SER1_IRQ-32)) #define I2C_MASK (1 << (I2C_IRQ-32)) -#define USB2D_IDENT (*(volatile unsigned long*)(0xc5000000)) -#define USB_STATUS (*(volatile unsigned long*)(0xc50001a4)) - #define IISCONFIG (*(volatile unsigned long*)(0x70002800)) #define IISFIFO_CFG (*(volatile unsigned long*)(0x7000280c)) diff --git a/firmware/target/arm/ipod/usb-target.h b/firmware/target/arm/ipod/usb-target.h deleted file mode 100644 index 69a81472f8..0000000000 --- a/firmware/target/arm/ipod/usb-target.h +++ /dev/null @@ -1,24 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 by Barry Wardelll - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#ifndef USB_TARGET_H -#define USB_TARGET_H - -bool usb_init_device(void); - -#endif diff --git a/firmware/target/arm/iriver/h10/usb-h10.c b/firmware/target/arm/iriver/h10/usb-h10.c deleted file mode 100644 index b11eb53deb..0000000000 --- a/firmware/target/arm/iriver/h10/usb-h10.c +++ /dev/null @@ -1,58 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 by Barry Wardell - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#include "config.h" -#include "cpu.h" -#include "kernel.h" -#include "thread.h" -#include "system.h" -#include "debug.h" -#include "ata.h" -#include "fat.h" -#include "disk.h" -#include "panic.h" -#include "lcd.h" -#include "adc.h" -#include "usb.h" -#include "button.h" -#include "sprintf.h" -#include "string.h" -#include "hwcompat.h" -#include "pp5020.h" - -void usb_init_device(void) -{ - /* USB is initialized by bootloader */ -} - -bool usb_detect(void) -{ - return (GPIOL_INPUT_VAL & 0x04)?true:false; -} - -void usb_enable(bool on) -{ - /* For the H10, we reboot if BUTTON_RIGHT is held so that the iriver - * bootloader can start up in UMS mode. This does not return. */ - if (on && (button_status()==BUTTON_RIGHT)) - { - ata_sleepnow(); /* Immediately spindown the disk. */ - sleep(HZ*2); - system_reboot(); - } -} diff --git a/firmware/target/arm/sandisk/sansa-e200/usb-e200.c b/firmware/target/arm/sandisk/sansa-e200/usb-e200.c deleted file mode 100644 index 031ba07253..0000000000 --- a/firmware/target/arm/sandisk/sansa-e200/usb-e200.c +++ /dev/null @@ -1,39 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 by Barry Wardelll - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include <stdbool.h> -#include "system.h" - -bool usb_init_device(void) -{ - return true; -} - -bool usb_detect(void) -{ - if(GPIOB_INPUT_VAL & 0x10) - return true; - return false; -} - -void usb_enable(bool on) -{ - (void)on; -} - diff --git a/firmware/target/arm/sandisk/sansa-e200/usb-target.h b/firmware/target/arm/sandisk/sansa-e200/usb-target.h deleted file mode 100644 index 3f309ff30b..0000000000 --- a/firmware/target/arm/sandisk/sansa-e200/usb-target.h +++ /dev/null @@ -1,25 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 by Barry Wardelll - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ -#ifndef USB_TARGET_H -#define USB_TARGET_H - -bool usb_init_device(void); - -#endif - diff --git a/firmware/target/arm/tatung/tpj1022/usb-target.h b/firmware/target/arm/tatung/tpj1022/usb-target.h deleted file mode 100644 index 7a17f7bacf..0000000000 --- a/firmware/target/arm/tatung/tpj1022/usb-target.h +++ /dev/null @@ -1,27 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 by Barry Wardelll - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -/* Based off x5 version */ - -#ifndef USB_TARGET_H -#define USB_TARGET_H - -bool usb_init_device(void); - -#endif diff --git a/firmware/target/arm/tatung/tpj1022/usb-tpj1022.c b/firmware/target/arm/tatung/tpj1022/usb-tpj1022.c deleted file mode 100644 index b238de4369..0000000000 --- a/firmware/target/arm/tatung/tpj1022/usb-tpj1022.c +++ /dev/null @@ -1,107 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2006 by Barry Wardell - * - * All files in this archive are subject to the GNU General Public License. - * See the file COPYING in the source tree root for full license agreement. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -/* Code from the iPod port but commented out. USB detection custom made based - on GPIO analysis */ - -#include "config.h" -#include "cpu.h" -#include "kernel.h" -#include "thread.h" -#include "system.h" -#include "debug.h" -#include "ata.h" -#include "fat.h" -#include "disk.h" -#include "panic.h" -#include "lcd.h" -#include "adc.h" -#include "usb.h" -#include "button.h" -#include "sprintf.h" -#include "string.h" -#include "hwcompat.h" -#ifdef HAVE_MMC -#include "ata_mmc.h" -#endif - -void usb_init_device(void) -{ -#if 0 - int r0; - outl(inl(0x70000084) | 0x200, 0x70000084); - - outl(inl(0x7000002C) | 0x3000000, 0x7000002C); - outl(inl(0x6000600C) | 0x400000, 0x6000600C); - - outl(inl(0x60006004) | 0x400000, 0x60006004); /* reset usb start */ - outl(inl(0x60006004) & ~0x400000, 0x60006004); /* reset usb end */ - - outl(inl(0x70000020) | 0x80000000, 0x70000020); - while ((inl(0x70000028) & 0x80) == 0); - - outl(inl(0xc5000184) | 0x100, 0xc5000184); - while ((inl(0xc5000184) & 0x100) != 0); - - outl(inl(0xc50001A4) | 0x5F000000, 0xc50001A4); - if ((inl(0xc50001A4) & 0x100) == 0) { - outl(inl(0xc50001A8) & ~0x3, 0xc50001A8); - outl(inl(0xc50001A8) | 0x2, 0xc50001A8); - outl(inl(0x70000028) | 0x4000, 0x70000028); - outl(inl(0x70000028) | 0x2, 0x70000028); - } else { - outl(inl(0xc50001A8) | 0x3, 0xc50001A8); - outl(inl(0x70000028) &~0x4000, 0x70000028); - outl(inl(0x70000028) | 0x2, 0x70000028); - } - outl(inl(0xc5000140) | 0x2, 0xc5000140); - while((inl(0xc5000140) & 0x2) != 0); - r0 = inl(0xc5000184); - - /* Note from IPL source (referring to next 5 lines of code: - THIS NEEDS TO BE CHANGED ONCE THERE IS KERNEL USB */ - outl(inl(0x70000020) | 0x80000000, 0x70000020); - outl(inl(0x6000600C) | 0x400000, 0x6000600C); - while ((inl(0x70000028) & 0x80) == 0); - outl(inl(0x70000028) | 0x2, 0x70000028); - - udelay(0x186A0); -#endif -} - -bool usb_detect(void) -{ - return false; -} - -void usb_enable(bool on) -{ - (void)on; -#if 0 - /* For the ipod, we can only do one thing with USB mode - reboot - into Apple's flash-based disk-mode. This does not return. */ - if (on) - { - /* The following code is copied from ipodlinux */ - unsigned char* storage_ptr = (unsigned char *)0x40017F00; - memcpy(storage_ptr, "diskmode\0\0hotstuff\0\0\1", 21); - DEV_RS |= 4; /* Reboot */ - } -#endif -} diff --git a/firmware/target/arm/ipod/usb-ipod.c b/firmware/target/arm/usb-pp.c index 9298d65ff7..f8d0a836ad 100644 --- a/firmware/target/arm/ipod/usb-ipod.c +++ b/firmware/target/arm/usb-pp.c @@ -38,6 +38,8 @@ #include "sprintf.h" #include "string.h" #include "hwcompat.h" + +#include "usb-target.h" void usb_init_device(void) { @@ -45,36 +47,36 @@ void usb_init_device(void) outl(inl(0x70000084) | 0x200, 0x70000084); outl(inl(0x7000002C) | 0x3000000, 0x7000002C); - outl(inl(0x6000600C) | 0x400000, 0x6000600C); + DEV_EN |= DEV_USB; - outl(inl(0x60006004) | 0x400000, 0x60006004); /* reset usb start */ - outl(inl(0x60006004) & ~0x400000, 0x60006004); /* reset usb end */ + DEV_RS |= DEV_USB; /* reset usb start */ + DEV_RS &=~DEV_USB;/* reset usb end */ - outl(inl(0x70000020) | 0x80000000, 0x70000020); + DEV_INIT |= INIT_USB; while ((inl(0x70000028) & 0x80) == 0); - outl(inl(0xc5000184) | 0x100, 0xc5000184); - while ((inl(0xc5000184) & 0x100) != 0); + UOG_PORTSC1 |= 0x100; + while ((UOG_PORTSC1 & 0x100) != 0); - outl(inl(0xc50001A4) | 0x5F000000, 0xc50001A4); - if ((inl(0xc50001A4) & 0x100) == 0) { - outl(inl(0xc50001A8) & ~0x3, 0xc50001A8); - outl(inl(0xc50001A8) | 0x2, 0xc50001A8); + UOG_OTGSC |= 0x5F000000; + if( (UOG_OTGSC & 0x100) == 0) { + UOG_USBMODE &=~ 0x3; + UOG_USBMODE |= 0x2; outl(inl(0x70000028) | 0x4000, 0x70000028); outl(inl(0x70000028) | 0x2, 0x70000028); } else { - outl(inl(0xc50001A8) | 0x3, 0xc50001A8); + UOG_USBMODE |= 0x2; outl(inl(0x70000028) &~0x4000, 0x70000028); outl(inl(0x70000028) | 0x2, 0x70000028); } - outl(inl(0xc5000140) | 0x2, 0xc5000140); - while((inl(0xc5000140) & 0x2) != 0); - r0 = inl(0xc5000184); + UOG_USBCMD |= 0x2; + while((UOG_USBCMD & 0x2) != 0); + r0 = UOG_PORTSC1; /* Note from IPL source (referring to next 5 lines of code: THIS NEEDS TO BE CHANGED ONCE THERE IS KERNEL USB */ outl(inl(0x70000020) | 0x80000000, 0x70000020); - outl(inl(0x6000600C) | 0x400000, 0x6000600C); + DEV_EN |= DEV_USB; while ((inl(0x70000028) & 0x80) == 0); outl(inl(0x70000028) | 0x2, 0x70000028); @@ -83,22 +85,34 @@ void usb_init_device(void) void usb_enable(bool on) { - /* For the ipod, we can only do one thing with USB mode - reboot - into Apple's flash-based disk-mode. This does not return. */ + /* This device specific code will eventually give way to proper USB + handling, which should be the same for all PortalPlayer targets. */ if (on) { - /* The following code is copied from ipodlinux */ +#if IPOD_ARCH || defined(IRIVER_H10) || defined (IRIVER_H10_5GB) + /* For the H10 and iPod, we can only do one thing with USB mode - reboot + into the flash-based disk-mode. This does not return. */ + + /* The following code is copied from ipodlinux */ #if defined(IPOD_COLOR) || defined(IPOD_3G) || \ defined(IPOD_4G) || defined(IPOD_MINI) unsigned char* storage_ptr = (unsigned char *)0x40017F00; #elif defined(IPOD_NANO) || defined(IPOD_VIDEO) || defined(IPOD_MINI2G) unsigned char* storage_ptr = (unsigned char *)0x4001FF00; #endif - - ata_sleepnow(); /* Immediately spindown the disk. */ - sleep(HZ*2); - memcpy(storage_ptr, "diskmode\0\0hotstuff\0\0\1", 21); - DEV_RS |= 4; /* Reboot */ + +#if defined(IRIVER_H10) || defined (IRIVER_H10_5GB) + if(button_status()==BUTTON_RIGHT) +#endif + { + ata_sleepnow(); /* Immediately spindown the disk. */ + sleep(HZ*2); +#ifdef IPOD_ARCH + memcpy(storage_ptr, "diskmode\0\0hotstuff\0\0\1", 21); +#endif + system_reboot(); /* Reboot */ + } +#endif } } @@ -106,12 +120,17 @@ bool usb_detect(void) { bool current_status; - /* The following check is in the ipodlinux source, with the - comment "USB2D_IDENT is bad" if USB2D_IDENT != 0x22FA05 */ - if (USB2D_IDENT != 0x22FA05) { + /* UOG_ID should have the bit format: + [31:24] = 0x0 + [23:16] = 0x22 (Revision number) + [15:14] = 0x3 (Reserved) + [13:8] = 0x3a (NID - 1's compliment of ID) + [7:6] = 0x0 (Reserved) + [5:0] = 0x05 (ID) */ + if (UOG_ID != 0x22FA05) { return false; } - current_status = (USB_STATUS & 0x800)?true:false; + current_status = (UOG_OTGSC & 0x800)?true:false; return current_status; } diff --git a/firmware/target/arm/usb-target.h b/firmware/target/arm/usb-target.h new file mode 100644 index 0000000000..2a5400be7e --- /dev/null +++ b/firmware/target/arm/usb-target.h @@ -0,0 +1,128 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2006 by Barry Wardelll + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ +#ifndef USB_TARGET_H +#define USB_TARGET_H + +/* The PortalPlayer USB controller is compatible with Freescale i.MX31 */ + +/* Register addresses */ +/* OTG */ +#define UOG_ID (*(volatile unsigned long *)(0xc5000000)) +#define UOG_HWGENERAL (*(volatile unsigned long *)(0xc5000004)) +#define UOG_HWHOST (*(volatile unsigned long *)(0xc5000008)) +#define UOG_HWTXBUF (*(volatile unsigned long *)(0xc5000010)) +#define UOG_HWRXBUF (*(volatile unsigned long *)(0xc5000014)) +#define UOG_CAPLENGTH (*(volatile unsigned char *)(0xc5000100)) +#define UOG_HCIVERSION (*(volatile unsigned short *)(0xc5000102)) +#define UOG_HCSPARAMS (*(volatile unsigned long *)(0xc5000104)) +#define UOG_HCCPARAMS (*(volatile unsigned long *)(0xc5000108)) +#define UOG_DCIVERSION (*(volatile unsigned short *)(0xc5000120)) +#define UOG_DCCPARAMS (*(volatile unsigned long *)(0xc5000124)) +#define UOG_USBCMD (*(volatile unsigned long *)(0xc5000140)) +#define UOG_USBSTS (*(volatile unsigned long *)(0xc5000144)) +#define UOG_USBINTR (*(volatile unsigned long *)(0xc5000148)) +#define UOG_FRINDEX (*(volatile unsigned long *)(0xc500014c)) +#define UOG_PERIODICLISTBASE (*(volatile unsigned long *)(0xc5000154)) +#define UOG_ASYNCLISTADDR (*(volatile unsigned long *)(0xc5000158)) +#define UOG_BURSTSIZE (*(volatile unsigned long *)(0xc5000160)) +#define UOG_TXFILLTUNING (*(volatile unsigned long *)(0xc5000164)) +#define UOG_ULPIVIEW (*(volatile unsigned long *)(0xc5000170)) +#define UOG_CFGFLAG (*(volatile unsigned long *)(0xc5000180)) +#define UOG_PORTSC1 (*(volatile unsigned long *)(0xc5000184)) +/*#define UOG_PORTSC2 (*(volatile unsigned long *)(0xc5000188)) +#define UOG_PORTSC3 (*(volatile unsigned long *)(0xc500018c)) +#define UOG_PORTSC4 (*(volatile unsigned long *)(0xc5000190)) +#define UOG_PORTSC5 (*(volatile unsigned long *)(0xc5000194)) +#define UOG_PORTSC6 (*(volatile unsigned long *)(0xc5000198)) +#define UOG_PORTSC7 (*(volatile unsigned long *)(0xc500019c)) +#define UOG_PORTSC8 (*(volatile unsigned long *)(0xc50001a0))*/ +#define UOG_OTGSC (*(volatile unsigned long *)(0xc50001a4)) +#define UOG_USBMODE (*(volatile unsigned long *)(0xc50001a8)) +#define UOG_ENDPTSETUPSTAT (*(volatile unsigned long *)(0xc50001ac)) +#define UOG_ENDPTPRIME (*(volatile unsigned long *)(0xc50001b0)) +#define UOG_ENDPTFLUSH (*(volatile unsigned long *)(0xc50001b4)) +#define UOG_ENDPTSTAT (*(volatile unsigned long *)(0xc50001b8)) +#define UOG_ENDPTCOMPLETE (*(volatile unsigned long *)(0xc50001bc)) +#define ENDPTCRTL0 (*(volatile unsigned long *)(0xc50001c0)) +#define ENDPTCRTL1 (*(volatile unsigned long *)(0xc50001c4)) +#define ENDPTCRTL2 (*(volatile unsigned long *)(0xc50001c8)) +#define ENDPTCRTL3 (*(volatile unsigned long *)(0xc50001cc)) +#define ENDPTCRTL4 (*(volatile unsigned long *)(0xc50001d0)) +#define ENDPTCRTL5 (*(volatile unsigned long *)(0xc50001d4)) +#define ENDPTCRTL6 (*(volatile unsigned long *)(0xc50001d8)) +#define ENDPTCRTL7 (*(volatile unsigned long *)(0xc50001dc)) +/*#define ENDPTCRTL8 (*(volatile unsigned long *)(0xc50001e0)) +#define ENDPTCRTL9 (*(volatile unsigned long *)(0xc50001e4)) +#define ENDPTCRTL10 (*(volatile unsigned long *)(0xc50001e8)) +#define ENDPTCRTL11 (*(volatile unsigned long *)(0xc50001ec)) +#define ENDPTCRTL12 (*(volatile unsigned long *)(0xc50001f0)) +#define ENDPTCRTL13 (*(volatile unsigned long *)(0xc50001f4)) +#define ENDPTCRTL14 (*(volatile unsigned long *)(0xc50001f8)) +#define ENDPTCRTL15 (*(volatile unsigned long *)(0xc50001fc))*/ + +/* Host 1 */ +#define UH1_ID (*(volatile unsigned long *)(0xc5000200)) +#define UH1_HWGENERAL (*(volatile unsigned long *)(0xc5000204)) +#define UH1_HWHOST (*(volatile unsigned long *)(0xc5000208)) +#define UH1_HWTXBUF (*(volatile unsigned long *)(0xc5000210)) +#define UH1_HWRXBUF (*(volatile unsigned long *)(0xc5000214)) +#define UH1_CAPLENGTH (*(volatile unsigned long *)(0xc5000300)) +#define UH1_HCIVERSION (*(volatile unsigned long *)(0xc5000302)) +#define UH1_HCSPARAMS (*(volatile unsigned long *)(0xc5000304)) +#define UH1_HCCPARAMS (*(volatile unsigned long *)(0xc5000308)) +#define UH1_USBCMD (*(volatile unsigned long *)(0xc5000340)) +#define UH1_USBSTS (*(volatile unsigned long *)(0xc5000344)) +#define UH1_USBINTR (*(volatile unsigned long *)(0xc5000348)) +#define UH1_FRINDEX (*(volatile unsigned long *)(0xc500034c)) +#define UH1_PERIODICLISTBASE (*(volatile unsigned long *)(0xc5000354)) +#define UH1_ASYNCLISTADDR (*(volatile unsigned long *)(0xc5000358)) +#define UH1_BURSTSIZE (*(volatile unsigned long *)(0xc5000360)) +#define UH1_TXFILLTUNING (*(volatile unsigned long *)(0xc5000364)) +#define UH1_PORTSC1 (*(volatile unsigned long *)(0xc5000384)) +#define UH1_USBMODE (*(volatile unsigned long *)(0xc50003a8)) + +/* Host 2 */ +#define UH2_ID (*(volatile unsigned long *)(0xc5000400)) +#define UH2_HWGENERAL (*(volatile unsigned long *)(0xc5000404)) +#define UH2_HWHOST (*(volatile unsigned long *)(0xc5000408)) +#define UH2_HWTXBUF (*(volatile unsigned long *)(0xc5000410)) +#define UH2_HWRXBUF (*(volatile unsigned long *)(0xc5000414)) +#define UH2_CAPLENGTH (*(volatile unsigned long *)(0xc5000500)) +#define UH2_HCIVERSION (*(volatile unsigned long *)(0xc5000502)) +#define UH2_HCSPARAMS (*(volatile unsigned long *)(0xc5000504)) +#define UH2_HCCPARAMS (*(volatile unsigned long *)(0xc5000508)) +#define UH2_USBCMD (*(volatile unsigned long *)(0xc5000540)) +#define UH2_USBSTS (*(volatile unsigned long *)(0xc5000544)) +#define UH2_USBINTR (*(volatile unsigned long *)(0xc5000548)) +#define UH2_FRINDEX (*(volatile unsigned long *)(0xc500054c)) +#define UH2_PERIODICLISTBASE (*(volatile unsigned long *)(0xc5000554)) +#define UH2_ASYNCLISTADDR (*(volatile unsigned long *)(0xc5000558)) +#define UH2_BURSTSIZE (*(volatile unsigned long *)(0xc5000560)) +#define UH2_TXFILLTUNING (*(volatile unsigned long *)(0xc5000564)) +#define UH2_ULPIVIEW (*(volatile unsigned long *)(0xc5000570)) +#define UH2_PORTSC1 (*(volatile unsigned long *)(0xc5000584)) +#define UH2_USBMODE (*(volatile unsigned long *)(0xc50005a8)) + +/* General */ +#define USB_CTRL (*(volatile unsigned long *)(0xc5000600)) +#define USB_OTG_MIRROR (*(volatile unsigned long *)(0xc5000604)) + +void usb_init_device(void); + +#endif |