ide.c (2e192b245ed36a63bab0ef576999a95e23f60ecd) | ide.c (4101f6879256720b30df712089a3df18565f9203) |
---|---|
1/* 2 * (C) Copyright 2000-2011 3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8/* --- 39 unchanged lines hidden (view full) --- 48#endif 49#if defined(CONFIG_SYS_ATA_IDE1_OFFSET) && (CONFIG_SYS_IDE_MAXBUS > 1) 50 CONFIG_SYS_ATA_IDE1_OFFSET, 51#endif 52}; 53 54static int ide_bus_ok[CONFIG_SYS_IDE_MAXBUS]; 55 | 1/* 2 * (C) Copyright 2000-2011 3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8/* --- 39 unchanged lines hidden (view full) --- 48#endif 49#if defined(CONFIG_SYS_ATA_IDE1_OFFSET) && (CONFIG_SYS_IDE_MAXBUS > 1) 50 CONFIG_SYS_ATA_IDE1_OFFSET, 51#endif 52}; 53 54static int ide_bus_ok[CONFIG_SYS_IDE_MAXBUS]; 55 |
56block_dev_desc_t ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE]; | 56struct blk_desc ide_dev_desc[CONFIG_SYS_IDE_MAXDEVICE]; |
57/* ------------------------------------------------------------------------- */ 58 59#ifdef CONFIG_IDE_RESET 60static void ide_reset (void); 61#else 62#define ide_reset() /* dummy */ 63#endif 64 | 57/* ------------------------------------------------------------------------- */ 58 59#ifdef CONFIG_IDE_RESET 60static void ide_reset (void); 61#else 62#define ide_reset() /* dummy */ 63#endif 64 |
65static void ide_ident (block_dev_desc_t *dev_desc); | 65static void ide_ident(struct blk_desc *dev_desc); |
66static uchar ide_wait (int dev, ulong t); 67 68#define IDE_TIME_OUT 2000 /* 2 sec timeout */ 69 70#define ATAPI_TIME_OUT 7000 /* 7 sec timeout (5 sec seems to work...) */ 71 72#define IDE_SPIN_UP_TIME_OUT 5000 /* 5 sec spin-up timeout */ 73 74static void ident_cpy (unsigned char *dest, unsigned char *src, unsigned int len); 75 76#ifndef CONFIG_SYS_ATA_PORT_ADDR 77#define CONFIG_SYS_ATA_PORT_ADDR(port) (port) 78#endif 79 80#ifdef CONFIG_ATAPI | 66static uchar ide_wait (int dev, ulong t); 67 68#define IDE_TIME_OUT 2000 /* 2 sec timeout */ 69 70#define ATAPI_TIME_OUT 7000 /* 7 sec timeout (5 sec seems to work...) */ 71 72#define IDE_SPIN_UP_TIME_OUT 5000 /* 5 sec spin-up timeout */ 73 74static void ident_cpy (unsigned char *dest, unsigned char *src, unsigned int len); 75 76#ifndef CONFIG_SYS_ATA_PORT_ADDR 77#define CONFIG_SYS_ATA_PORT_ADDR(port) (port) 78#endif 79 80#ifdef CONFIG_ATAPI |
81static void atapi_inquiry(block_dev_desc_t *dev_desc); 82static ulong atapi_read(block_dev_desc_t *block_dev, lbaint_t blknr, | 81static void atapi_inquiry(struct blk_desc *dev_desc); 82static ulong atapi_read(struct blk_desc *block_dev, lbaint_t blknr, |
83 lbaint_t blkcnt, void *buffer); 84#endif 85 86 87/* ------------------------------------------------------------------------- */ 88 89int do_ide(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) 90{ --- 91 unchanged lines hidden (view full) --- 182 183 return CMD_RET_USAGE; 184 default: 185 /* at least 4 args */ 186 187 if (strcmp(argv[1], "read") == 0) { 188 ulong addr = simple_strtoul(argv[2], NULL, 16); 189 ulong cnt = simple_strtoul(argv[4], NULL, 16); | 83 lbaint_t blkcnt, void *buffer); 84#endif 85 86 87/* ------------------------------------------------------------------------- */ 88 89int do_ide(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) 90{ --- 91 unchanged lines hidden (view full) --- 182 183 return CMD_RET_USAGE; 184 default: 185 /* at least 4 args */ 186 187 if (strcmp(argv[1], "read") == 0) { 188 ulong addr = simple_strtoul(argv[2], NULL, 16); 189 ulong cnt = simple_strtoul(argv[4], NULL, 16); |
190 block_dev_desc_t *dev_desc; | 190 struct blk_desc *dev_desc; |
191 ulong n; 192 193#ifdef CONFIG_SYS_64BIT_LBA 194 lbaint_t blk = simple_strtoull(argv[3], NULL, 16); 195 196 printf("\nIDE read: device %d block # %lld, count %ld ... ", 197 curr_device, blk, cnt); 198#else --- 242 unchanged lines hidden (view full) --- 441 } 442 } 443 WATCHDOG_RESET(); 444} 445 446/* ------------------------------------------------------------------------- */ 447 448#ifdef CONFIG_PARTITIONS | 191 ulong n; 192 193#ifdef CONFIG_SYS_64BIT_LBA 194 lbaint_t blk = simple_strtoull(argv[3], NULL, 16); 195 196 printf("\nIDE read: device %d block # %lld, count %ld ... ", 197 curr_device, blk, cnt); 198#else --- 242 unchanged lines hidden (view full) --- 441 } 442 } 443 WATCHDOG_RESET(); 444} 445 446/* ------------------------------------------------------------------------- */ 447 448#ifdef CONFIG_PARTITIONS |
449block_dev_desc_t *ide_get_dev(int dev) | 449struct blk_desc *ide_get_dev(int dev) |
450{ 451 return (dev < CONFIG_SYS_IDE_MAXDEVICE) ? &ide_dev_desc[dev] : NULL; 452} 453#endif 454 455/* ------------------------------------------------------------------------- */ 456 457/* We only need to swap data if we are running on a big endian cpu. */ --- 78 unchanged lines hidden (view full) --- 536 insw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, words << 1); 537#endif 538} 539 540#endif /* CONFIG_IDE_SWAP_IO */ 541 542/* ------------------------------------------------------------------------- 543 */ | 450{ 451 return (dev < CONFIG_SYS_IDE_MAXDEVICE) ? &ide_dev_desc[dev] : NULL; 452} 453#endif 454 455/* ------------------------------------------------------------------------- */ 456 457/* We only need to swap data if we are running on a big endian cpu. */ --- 78 unchanged lines hidden (view full) --- 536 insw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, words << 1); 537#endif 538} 539 540#endif /* CONFIG_IDE_SWAP_IO */ 541 542/* ------------------------------------------------------------------------- 543 */ |
544static void ide_ident(block_dev_desc_t *dev_desc) | 544static void ide_ident(struct blk_desc *dev_desc) |
545{ 546 unsigned char c; 547 hd_driveid_t iop; 548 549#ifdef CONFIG_ATAPI 550 int retries = 0; 551#endif 552 int device; --- 155 unchanged lines hidden (view full) --- 708 udelay(50); 709 c = ide_wait(device, IDE_TIME_OUT); /* can't take over 500 ms */ 710#endif 711} 712 713 714/* ------------------------------------------------------------------------- */ 715 | 545{ 546 unsigned char c; 547 hd_driveid_t iop; 548 549#ifdef CONFIG_ATAPI 550 int retries = 0; 551#endif 552 int device; --- 155 unchanged lines hidden (view full) --- 708 udelay(50); 709 c = ide_wait(device, IDE_TIME_OUT); /* can't take over 500 ms */ 710#endif 711} 712 713 714/* ------------------------------------------------------------------------- */ 715 |
716ulong ide_read(block_dev_desc_t *block_dev, lbaint_t blknr, lbaint_t blkcnt, | 716ulong ide_read(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt, |
717 void *buffer) 718{ 719 int device = block_dev->dev; 720 ulong n = 0; 721 unsigned char c; 722 unsigned char pwrsave = 0; /* power save */ 723 724#ifdef CONFIG_LBA48 --- 109 unchanged lines hidden (view full) --- 834IDE_READ_E: 835 ide_led(DEVICE_LED(device), 0); /* LED off */ 836 return (n); 837} 838 839/* ------------------------------------------------------------------------- */ 840 841 | 717 void *buffer) 718{ 719 int device = block_dev->dev; 720 ulong n = 0; 721 unsigned char c; 722 unsigned char pwrsave = 0; /* power save */ 723 724#ifdef CONFIG_LBA48 --- 109 unchanged lines hidden (view full) --- 834IDE_READ_E: 835 ide_led(DEVICE_LED(device), 0); /* LED off */ 836 return (n); 837} 838 839/* ------------------------------------------------------------------------- */ 840 841 |
842ulong ide_write(block_dev_desc_t *block_dev, lbaint_t blknr, lbaint_t blkcnt, | 842ulong ide_write(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt, |
843 const void *buffer) 844{ 845 int device = block_dev->dev; 846 ulong n = 0; 847 unsigned char c; 848 849#ifdef CONFIG_LBA48 850 unsigned char lba48 = 0; --- 445 unchanged lines hidden (view full) --- 1296 printf("ERROR: Unknown Sense key %02X ASC %02X ASCQ %02X\n", key, asc, 1297 ascq); 1298error: 1299 debug("ERROR Sense key %02X ASC %02X ASCQ %02X\n", key, asc, ascq); 1300 return (0xFF); 1301} 1302 1303 | 843 const void *buffer) 844{ 845 int device = block_dev->dev; 846 ulong n = 0; 847 unsigned char c; 848 849#ifdef CONFIG_LBA48 850 unsigned char lba48 = 0; --- 445 unchanged lines hidden (view full) --- 1296 printf("ERROR: Unknown Sense key %02X ASC %02X ASCQ %02X\n", key, asc, 1297 ascq); 1298error: 1299 debug("ERROR Sense key %02X ASC %02X ASCQ %02X\n", key, asc, ascq); 1300 return (0xFF); 1301} 1302 1303 |
1304static void atapi_inquiry(block_dev_desc_t *dev_desc) | 1304static void atapi_inquiry(struct blk_desc *dev_desc) |
1305{ 1306 unsigned char ccb[12]; /* Command descriptor block */ 1307 unsigned char iobuf[64]; /* temp buf */ 1308 unsigned char c; 1309 int device; 1310 1311 device = dev_desc->dev; 1312 dev_desc->type = DEV_TYPE_UNKNOWN; /* not yet valid */ --- 76 unchanged lines hidden (view full) --- 1389 * atapi_read: 1390 * we transfer only one block per command, since the multiple DRQ per 1391 * command is not yet implemented 1392 */ 1393#define ATAPI_READ_MAX_BYTES 2048 /* we read max 2kbytes */ 1394#define ATAPI_READ_BLOCK_SIZE 2048 /* assuming CD part */ 1395#define ATAPI_READ_MAX_BLOCK (ATAPI_READ_MAX_BYTES/ATAPI_READ_BLOCK_SIZE) 1396 | 1305{ 1306 unsigned char ccb[12]; /* Command descriptor block */ 1307 unsigned char iobuf[64]; /* temp buf */ 1308 unsigned char c; 1309 int device; 1310 1311 device = dev_desc->dev; 1312 dev_desc->type = DEV_TYPE_UNKNOWN; /* not yet valid */ --- 76 unchanged lines hidden (view full) --- 1389 * atapi_read: 1390 * we transfer only one block per command, since the multiple DRQ per 1391 * command is not yet implemented 1392 */ 1393#define ATAPI_READ_MAX_BYTES 2048 /* we read max 2kbytes */ 1394#define ATAPI_READ_BLOCK_SIZE 2048 /* assuming CD part */ 1395#define ATAPI_READ_MAX_BLOCK (ATAPI_READ_MAX_BYTES/ATAPI_READ_BLOCK_SIZE) 1396 |
1397ulong atapi_read(block_dev_desc_t *block_dev, lbaint_t blknr, lbaint_t blkcnt, | 1397ulong atapi_read(struct blk_desc *block_dev, lbaint_t blknr, lbaint_t blkcnt, |
1398 void *buffer) 1399{ 1400 int device = block_dev->dev; 1401 ulong n = 0; 1402 unsigned char ccb[12]; /* Command descriptor block */ 1403 ulong cnt; 1404 1405 debug("atapi_read dev %d start " LBAF " blocks " LBAF " buffer at %lX\n", --- 52 unchanged lines hidden --- | 1398 void *buffer) 1399{ 1400 int device = block_dev->dev; 1401 ulong n = 0; 1402 unsigned char ccb[12]; /* Command descriptor block */ 1403 ulong cnt; 1404 1405 debug("atapi_read dev %d start " LBAF " blocks " LBAF " buffer at %lX\n", --- 52 unchanged lines hidden --- |