summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2008-03-13 19:56:52 +0000
committerFrank Gevaerts <frank@gevaerts.be>2008-03-13 19:56:52 +0000
commit7fcd26e479afddfb94bd99082e1535d896165876 (patch)
treec326153ef74056341ee8e7a751e456235a806ee4
parent3c561f2cf999b2d805084aabeb4d5feac6fa3893 (diff)
downloadrockbox-7fcd26e479afddfb94bd99082e1535d896165876.tar.gz
rockbox-7fcd26e479afddfb94bd99082e1535d896165876.tar.bz2
rockbox-7fcd26e479afddfb94bd99082e1535d896165876.zip
Only boost the CPU for large transactions. It would be nice to get rid of boosting for USB altogehter, but it doesn't seem to work then.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16656 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/usb-drv-pp502x.c1
-rw-r--r--firmware/usbstack/usb_storage.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/firmware/target/arm/usb-drv-pp502x.c b/firmware/target/arm/usb-drv-pp502x.c
index e35b4da67f..06358669c6 100644
--- a/firmware/target/arm/usb-drv-pp502x.c
+++ b/firmware/target/arm/usb-drv-pp502x.c
@@ -353,7 +353,6 @@ bool usb_drv_powered(void)
/* manual: 32.14.1 Device Controller Initialization */
void usb_drv_init(void)
{
- trigger_cpu_boost();
REG_USBCMD &= ~USBCMD_RUN;
udelay(50000);
REG_USBCMD |= USBCMD_CTRL_RESET;
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index 59339eb1c3..9488f8aecc 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -879,6 +879,7 @@ static void handle_scsi(struct command_block_wrapper* cbw)
cur_sense_data.ascq=0;
}
else {
+ trigger_cpu_boost();
cur_cmd.last_result = ata_read_sectors(IF_MV2(cur_cmd.lun,)
cur_cmd.sector,
MIN(BUFFER_SIZE/SECTOR_SIZE,
@@ -916,6 +917,7 @@ static void handle_scsi(struct command_block_wrapper* cbw)
cur_sense_data.ascq=0;
}
else {
+ trigger_cpu_boost();
receive_block_data(cur_cmd.data[0],
MIN(BUFFER_SIZE,
cur_cmd.count*SECTOR_SIZE));
@@ -951,6 +953,7 @@ static void receive_block_data(void *data,int size)
static void send_csw(int status)
{
+ cancel_cpu_boost();
tb.csw->signature = htole32(CSW_SIGNATURE);
tb.csw->tag = cur_cmd.tag;
tb.csw->data_residue = 0;