summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
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 e4600e171a..8b3e54da44 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -246,6 +246,43 @@ int ide_read_register(int reg) {
246 return ide_reg_temp; 246 return ide_reg_temp;
247} 247}
248 248
249#elif defined(TOSHIBA_GIGABEAT_F)
250
251/* don't use sh7034 assembler routines */
252#define PREFER_C_READING
253#define PREFER_C_WRITING
254
255#define ATA_IOBASE 0x20000000
256#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE)))
257#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x02)))
258#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x04)))
259#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x06)))
260#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x08)))
261#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x10)))
262#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x12)))
263#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x14)))
264#define ATA_CONTROL (*((volatile unsigned char*)(0x21000000 + 0x1c)))
265
266#define STATUS_BSY 0x80
267#define STATUS_RDY 0x40
268#define STATUS_DF 0x20
269#define STATUS_DRQ 0x08
270#define STATUS_ERR 0x01
271#define ERROR_ABRT 0x04
272
273#define WRITE_PATTERN1 0xa5
274#define WRITE_PATTERN2 0x5a
275#define WRITE_PATTERN3 0xaa
276#define WRITE_PATTERN4 0x55
277
278#define READ_PATTERN1 0xa5
279#define READ_PATTERN2 0x5a
280#define READ_PATTERN3 0xaa
281#define READ_PATTERN4 0x55
282
283#define SET_REG(reg,val) reg = (val)
284#define SET_16BITREG(reg,val) reg = (val)
285
249#endif 286#endif
250 287
251#define ATA_FEATURE ATA_ERROR 288#define ATA_FEATURE ATA_ERROR
@@ -1429,6 +1466,9 @@ int ata_init(void)
1429#elif (CONFIG_CPU == PP5002) || (CONFIG_CPU == PP5020) 1466#elif (CONFIG_CPU == PP5002) || (CONFIG_CPU == PP5020)
1430 bool coldstart = false; 1467 bool coldstart = false;
1431 /* TODO: Implement coldstart variable */ 1468 /* TODO: Implement coldstart variable */
1469#elif defined(TOSHIBA_GIGABEAT_F)
1470 /* TODO */
1471 bool coldstart = true;
1432#else 1472#else
1433 bool coldstart = (PACR2 & 0x4000) != 0; 1473 bool coldstart = (PACR2 & 0x4000) != 0;
1434#endif 1474#endif
diff --git a/firmware/drivers/power.c b/firmware/drivers/power.c
index d7750a33b2..b62121298d 100644
--- a/firmware/drivers/power.c
+++ b/firmware/drivers/power.c
@@ -122,6 +122,8 @@ bool charger_inserted(void)
122 /* FM or V2, can also charge from the USB port */ 122 /* FM or V2, can also charge from the USB port */
123 return (adc_read(ADC_CHARGE_REGULATOR) < 0x1FF) || 123 return (adc_read(ADC_CHARGE_REGULATOR) < 0x1FF) ||
124 (adc_read(ADC_USB_POWER) < 0x1FF); 124 (adc_read(ADC_USB_POWER) < 0x1FF);
125#elif defined(TOSHIBA_GIGABEAT_F)
126 return false;
125#else 127#else
126 /* Player */ 128 /* Player */
127 return (PADR & 1) == 0; 129 return (PADR & 1) == 0;
@@ -189,6 +191,8 @@ void ide_power_enable(bool on)
189 P1 &= ~0x08; 191 P1 &= ~0x08;
190#elif CONFIG_CPU == PNX0101 192#elif CONFIG_CPU == PNX0101
191 /* no ide controller */ 193 /* no ide controller */
194#elif defined(TOSHIBA_GIGABEAT_F)
195 /* Gigabeat TODO */
192#else /* SH1 based archos */ 196#else /* SH1 based archos */
193 bool touched = false; 197 bool touched = false;
194#ifdef NEEDS_ATA_POWER_ON 198#ifdef NEEDS_ATA_POWER_ON
@@ -241,6 +245,8 @@ bool ide_powered(void)
241 return true; 245 return true;
242#elif defined(GMINI_ARCH) 246#elif defined(GMINI_ARCH)
243 return (P1 & 0x08?true:false); 247 return (P1 & 0x08?true:false);
248#elif defined(TOSHIBA_GIGABEAT_F)
249 return false;
244#else /* SH1 based archos */ 250#else /* SH1 based archos */
245#if defined(NEEDS_ATA_POWER_ON) || defined(HAVE_ATA_POWER_OFF) 251#if defined(NEEDS_ATA_POWER_ON) || defined(HAVE_ATA_POWER_OFF)
246#ifdef ATA_POWER_PLAYERSTYLE 252#ifdef ATA_POWER_PLAYERSTYLE
@@ -283,6 +289,8 @@ void power_off(void)
283#elif defined(GMINI_ARCH) 289#elif defined(GMINI_ARCH)
284 P1 &= ~1; 290 P1 &= ~1;
285 P1CON &= ~1; 291 P1CON &= ~1;
292#elif defined(TOSHIBA_GIGABEAT_F)
293 /* FIXME: Can we turn the device off, or only enter sleep mode? */
286#else 294#else
287#ifdef HAVE_POWEROFF_ON_PBDR 295#ifdef HAVE_POWEROFF_ON_PBDR
288 and_b(~0x10, &PBDRL); 296 and_b(~0x10, &PBDRL);