1
0
Fork 0
forked from len0rd/rockbox

H300 bootloader USB mode

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8168 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Linus Nielsen Feltzing 2005-12-06 12:12:29 +00:00
parent 55e9670c70
commit 01917ec980
3 changed files with 19 additions and 38 deletions

View file

@ -26,6 +26,7 @@
#include "kernel.h"
#include "thread.h"
#include "ata.h"
#include "usb.h"
#include "disk.h"
#include "font.h"
#include "adc.h"
@ -47,32 +48,6 @@ int usb_screen(void)
char version[] = APPSVERSION;
static void usb_enable(bool on)
{
and_l(~0x01000000, &GPIO_OUT); /* GPIO24 is the Cypress chip power */
or_l(0x01000000, &GPIO_ENABLE);
or_l(0x01000000, &GPIO_FUNCTION);
or_l(0x00000080, &GPIO1_FUNCTION); /* GPIO39 is the USB detect input */
if(on)
{
/* Power on the Cypress chip */
or_l(0x01000000, &GPIO_OUT);
sleep(2);
}
else
{
/* Power off the Cypress chip */
and_l(~0x01000000, &GPIO_OUT);
}
}
bool usb_detect(void)
{
return (GPIO1_READ & 0x80)?true:false;
}
void start_iriver_fw(void)
{
asm(" move.w #0x2700,%sr");
@ -285,6 +260,8 @@ void main(void)
power_off();
}
usb_init();
adc_battery = adc_read(ADC_BATTERY);
battery_voltage = (adc_battery * BATTERY_SCALE_FACTOR) / 10000;
@ -318,13 +295,17 @@ void main(void)
/* A hack to enter USB mode without using the USB thread */
if(usb_detect())
{
const char msg[] = "Bootloader USB mode";
int w, h;
font_getstringsize(msg, &w, &h, FONT_SYSFIXED);
lcd_clear_display();
lcd_puts(0, 7, " Bootloader USB mode");
lcd_putsxy((LCD_WIDTH-w)/2, (LCD_HEIGHT-h)/2, msg);
lcd_update();
ata_spin();
ata_enable(false);
usb_enable(true);
cpu_idle_mode(true);
while(usb_detect())
{
ata_spin(); /* Prevent the drive from spinning down */
@ -334,6 +315,7 @@ void main(void)
or_l(0x00020000, &GPIO1_OUT);
}
cpu_idle_mode(false);
usb_enable(false);
ata_init(); /* Reinitialize ATA and continue booting */
@ -385,14 +367,6 @@ void mpeg_stop(void)
{
}
void usb_acknowledge(void)
{
}
void usb_wait_for_disconnect(void)
{
}
void sys_poweroff(void)
{
}