summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/ata.c69
-rw-r--r--firmware/drivers/serial.c5
2 files changed, 16 insertions, 58 deletions
diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c
index 9c37a15537..8593eebea1 100644
--- a/firmware/drivers/ata.c
+++ b/firmware/drivers/ata.c
@@ -274,48 +274,6 @@ int ide_read_register(int reg) {
274 return ide_reg_temp; 274 return ide_reg_temp;
275} 275}
276 276
277#elif defined(TOSHIBA_GIGABEAT_F)
278
279/* Plain C read & write loops */
280#define PREFER_C_READING
281#define PREFER_C_WRITING
282
283#define ATA_IOBASE 0x18000000
284#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE)))
285#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x02)))
286#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x04)))
287#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x06)))
288#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x08)))
289#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x10)))
290#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x12)))
291#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x14)))
292#define ATA_CONTROL (*((volatile unsigned char*)(0x20000000 + 0x1c)))
293
294#define STATUS_BSY 0x80
295#define STATUS_RDY 0x40
296#define STATUS_DF 0x20
297#define STATUS_DRQ 0x08
298#define STATUS_ERR 0x01
299#define ERROR_ABRT 0x04
300
301#define WRITE_PATTERN1 0xa5
302#define WRITE_PATTERN2 0x5a
303#define WRITE_PATTERN3 0xaa
304#define WRITE_PATTERN4 0x55
305
306#define READ_PATTERN1 0xa5
307#define READ_PATTERN2 0x5a
308#define READ_PATTERN3 0xaa
309#define READ_PATTERN4 0x55
310
311#define READ_PATTERN1_MASK 0xff
312#define READ_PATTERN2_MASK 0xff
313#define READ_PATTERN3_MASK 0xff
314#define READ_PATTERN4_MASK 0xff
315
316#define SET_REG(reg,val) reg = (val)
317#define SET_16BITREG(reg,val) reg = (val)
318
319#endif 277#endif
320 278
321#ifndef NOINLINE_ATTR 279#ifndef NOINLINE_ATTR
@@ -323,6 +281,7 @@ int ide_read_register(int reg) {
323#endif 281#endif
324 282
325#define ATA_FEATURE ATA_ERROR 283#define ATA_FEATURE ATA_ERROR
284
326#define ATA_STATUS ATA_COMMAND 285#define ATA_STATUS ATA_COMMAND
327#define ATA_ALT_STATUS ATA_CONTROL 286#define ATA_ALT_STATUS ATA_CONTROL
328 287
@@ -348,7 +307,6 @@ int ide_read_register(int reg) {
348 307
349#define READ_TIMEOUT 5*HZ 308#define READ_TIMEOUT 5*HZ
350 309
351
352static struct mutex ata_mtx; 310static struct mutex ata_mtx;
353char ata_device; /* device 0 (master) or 1 (slave) */ 311char ata_device; /* device 0 (master) or 1 (slave) */
354int ata_io_address; /* 0x300 or 0x200, only valid on recorder */ 312int ata_io_address; /* 0x300 or 0x200, only valid on recorder */
@@ -430,6 +388,7 @@ static int wait_for_start_of_transfer(void)
430{ 388{
431 if (!wait_for_bsy()) 389 if (!wait_for_bsy())
432 return 0; 390 return 0;
391
433 return (ATA_ALT_STATUS & (STATUS_BSY|STATUS_DRQ)) == STATUS_DRQ; 392 return (ATA_ALT_STATUS & (STATUS_BSY|STATUS_DRQ)) == STATUS_DRQ;
434} 393}
435 394
@@ -1402,16 +1361,16 @@ static int check_registers(void)
1402 return -1; 1361 return -1;
1403 1362
1404 for (i = 0; i<64; i++) { 1363 for (i = 0; i<64; i++) {
1405 SET_REG(ATA_NSECTOR, WRITE_PATTERN1); 1364 SET_REG(ATA_NSECTOR, WRITE_PATTERN1);
1406 SET_REG(ATA_SECTOR, WRITE_PATTERN2); 1365 SET_REG(ATA_SECTOR, WRITE_PATTERN2);
1407 SET_REG(ATA_LCYL, WRITE_PATTERN3); 1366 SET_REG(ATA_LCYL, WRITE_PATTERN3);
1408 SET_REG(ATA_HCYL, WRITE_PATTERN4); 1367 SET_REG(ATA_HCYL, WRITE_PATTERN4);
1409 1368
1410 if (((ATA_NSECTOR & READ_PATTERN1_MASK) == READ_PATTERN1) && 1369 if (((ATA_NSECTOR & READ_PATTERN1_MASK) == READ_PATTERN1) &&
1411 ((ATA_SECTOR & READ_PATTERN2_MASK) == READ_PATTERN2) && 1370 ((ATA_SECTOR & READ_PATTERN2_MASK) == READ_PATTERN2) &&
1412 ((ATA_LCYL & READ_PATTERN3_MASK) == READ_PATTERN3) && 1371 ((ATA_LCYL & READ_PATTERN3_MASK) == READ_PATTERN3) &&
1413 ((ATA_HCYL & READ_PATTERN4_MASK) == READ_PATTERN4)) 1372 ((ATA_HCYL & READ_PATTERN4_MASK) == READ_PATTERN4))
1414 return 0; 1373 return 0;
1415 } 1374 }
1416 return -2; 1375 return -2;
1417#endif 1376#endif
@@ -1957,12 +1916,15 @@ int ata_init(void)
1957 } 1916 }
1958 1917
1959 rc = identify(); 1918 rc = identify();
1919
1960 if (rc) 1920 if (rc)
1961 return -40 + rc; 1921 return -40 + rc;
1922
1962 multisectors = identify_info[47] & 0xff; 1923 multisectors = identify_info[47] & 0xff;
1963 DEBUGF("ata: %d sectors per ata request\n",multisectors); 1924 DEBUGF("ata: %d sectors per ata request\n",multisectors);
1964 1925
1965 rc = freeze_lock(); 1926 rc = freeze_lock();
1927
1966 if (rc) 1928 if (rc)
1967 return -50 + rc; 1929 return -50 + rc;
1968 1930
@@ -1977,7 +1939,6 @@ int ata_init(void)
1977 sizeof(ata_stack), ata_thread_name); 1939 sizeof(ata_stack), ata_thread_name);
1978 initialized = true; 1940 initialized = true;
1979 1941
1980
1981 } 1942 }
1982 rc = set_multiple_mode(multisectors); 1943 rc = set_multiple_mode(multisectors);
1983 if (rc) 1944 if (rc)
diff --git a/firmware/drivers/serial.c b/firmware/drivers/serial.c
index f1cee96d51..46280bc8cc 100644
--- a/firmware/drivers/serial.c
+++ b/firmware/drivers/serial.c
@@ -28,10 +28,7 @@
28#include "serial.h" 28#include "serial.h"
29 29
30 30
31#if (CONFIG_CPU != MCF5249) && (CONFIG_CPU != TCC730) && \ 31#if CONFIG_CPU == SH7034
32 (CONFIG_CPU != PP5020) && (CONFIG_CPU != PNX0101) && \
33 (CONFIG_CPU != PP5002) && (CONFIG_CPU != MCF5250) && \
34 (CONFIG_CPU != PP5024)
35 32
36/* FIX: this doesn't work on iRiver or Gmini or iPod yet */ 33/* FIX: this doesn't work on iRiver or Gmini or iPod yet */
37/* iFP7xx has no remote */ 34/* iFP7xx has no remote */