summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorMarcoen Hirschberg <marcoen@gmail.com>2006-02-24 15:42:52 +0000
committerMarcoen Hirschberg <marcoen@gmail.com>2006-02-24 15:42:52 +0000
commit338e2bbb0c6673452c64378ef9e609d5c19c7558 (patch)
tree7314096e43a7eedfd7091c39fed97c0c33400827 /firmware/drivers
parentb902428180c11def61f2d3caa2612b9f80d7d41a (diff)
downloadrockbox-338e2bbb0c6673452c64378ef9e609d5c19c7558.zip
rockbox-338e2bbb0c6673452c64378ef9e609d5c19c7558.tar.gz
rockbox-338e2bbb0c6673452c64378ef9e609d5c19c7558.tar.bz2
rockbox-338e2bbb0c6673452c64378ef9e609d5c19c7558.tar.xz
first gigabeat commit
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8831 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/ata.c40
-rw-r--r--firmware/drivers/power.c8
2 files changed, 48 insertions, 0 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index e4600e1..8b3e54d 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -246,6 +246,43 @@ int ide_read_register(int reg) {
return ide_reg_temp;
}
+#elif defined(TOSHIBA_GIGABEAT_F)
+
+/* don't use sh7034 assembler routines */
+#define PREFER_C_READING
+#define PREFER_C_WRITING
+
+#define ATA_IOBASE 0x20000000
+#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE)))
+#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x02)))
+#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x04)))
+#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x06)))
+#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x08)))
+#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x10)))
+#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x12)))
+#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x14)))
+#define ATA_CONTROL (*((volatile unsigned char*)(0x21000000 + 0x1c)))
+
+#define STATUS_BSY 0x80
+#define STATUS_RDY 0x40
+#define STATUS_DF 0x20
+#define STATUS_DRQ 0x08
+#define STATUS_ERR 0x01
+#define ERROR_ABRT 0x04
+
+#define WRITE_PATTERN1 0xa5
+#define WRITE_PATTERN2 0x5a
+#define WRITE_PATTERN3 0xaa
+#define WRITE_PATTERN4 0x55
+
+#define READ_PATTERN1 0xa5
+#define READ_PATTERN2 0x5a
+#define READ_PATTERN3 0xaa
+#define READ_PATTERN4 0x55
+
+#define SET_REG(reg,val) reg = (val)
+#define SET_16BITREG(reg,val) reg = (val)
+
#endif
#define ATA_FEATURE ATA_ERROR
@@ -1429,6 +1466,9 @@ int ata_init(void)
#elif (CONFIG_CPU == PP5002) || (CONFIG_CPU == PP5020)
bool coldstart = false;
/* TODO: Implement coldstart variable */
+#elif defined(TOSHIBA_GIGABEAT_F)
+ /* TODO */
+ bool coldstart = true;
#else
bool coldstart = (PACR2 & 0x4000) != 0;
#endif
diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c
index d7750a3..b621212 100644
--- a/firmware/drivers/power.c
+++ b/firmware/drivers/power.c
@@ -122,6 +122,8 @@ bool charger_inserted(void)
/* FM or V2, can also charge from the USB port */
return (adc_read(ADC_CHARGE_REGULATOR) < 0x1FF) ||
(adc_read(ADC_USB_POWER) < 0x1FF);
+#elif defined(TOSHIBA_GIGABEAT_F)
+ return false;
#else
/* Player */
return (PADR & 1) == 0;
@@ -189,6 +191,8 @@ void ide_power_enable(bool on)
P1 &= ~0x08;
#elif CONFIG_CPU == PNX0101
/* no ide controller */
+#elif defined(TOSHIBA_GIGABEAT_F)
+ /* Gigabeat TODO */
#else /* SH1 based archos */
bool touched = false;
#ifdef NEEDS_ATA_POWER_ON
@@ -241,6 +245,8 @@ bool ide_powered(void)
return true;
#elif defined(GMINI_ARCH)
return (P1 & 0x08?true:false);
+#elif defined(TOSHIBA_GIGABEAT_F)
+ return false;
#else /* SH1 based archos */
#if defined(NEEDS_ATA_POWER_ON) || defined(HAVE_ATA_POWER_OFF)
#ifdef ATA_POWER_PLAYERSTYLE
@@ -283,6 +289,8 @@ void power_off(void)
#elif defined(GMINI_ARCH)
P1 &= ~1;
P1CON &= ~1;
+#elif defined(TOSHIBA_GIGABEAT_F)
+ /* FIXME: Can we turn the device off, or only enter sleep mode? */
#else
#ifdef HAVE_POWEROFF_ON_PBDR
and_b(~0x10, &PBDRL);