1
0
Fork 0
forked from len0rd/rockbox

HD300 - hacky workaround which makes USB bridge work in rockbox

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28845 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Marcin Bukat 2010-12-16 22:07:07 +00:00
parent 22d790bd12
commit 21955350b4

View file

@ -39,12 +39,38 @@ void ata_reset(void)
void ata_enable(bool on) void ata_enable(bool on)
{ {
static bool init = true;
/* Ide power toggling is a nasty hack to allow USB bridge operation
* in rockbox. For some reason GL811E bridge doesn't like the state
* in which rockbox leaves drive (and vice versa). The only way
* I found out to recover is to do disk power cycle (I tried toggling
* reset line of the disk but it doesn't work).
*/
/* GPO36 /reset line of GL811E */ /* GPO36 /reset line of GL811E */
if (on) if (on)
{
and_l(~(1<<4), &GPIO1_OUT); and_l(~(1<<4), &GPIO1_OUT);
#ifndef BOOTLADER
if ( !init )
{
ide_power_enable(false);
sleep(1);
ide_power_enable(true);
}
#endif
init = false;
}
else else
{
#ifndef BOOTLOADER
ide_power_enable(false);
sleep(1);
ide_power_enable(true);
#endif
or_l((1<<4), &GPIO1_OUT); or_l((1<<4), &GPIO1_OUT);
}
or_l((1<<4), &GPIO1_ENABLE); or_l((1<<4), &GPIO1_ENABLE);
or_l((1<<4), &GPIO1_FUNCTION); or_l((1<<4), &GPIO1_FUNCTION);
} }