Changeset e682af1 in mainline for uspace/srv/bd/ata_bd/ata_bd.c
- Timestamp:
- 2011-01-02T21:23:21Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1caeb2d
- Parents:
- f418e51 (diff), e092dc5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/ata_bd/ata_bd.c
rf418e51 re682af1 65 65 #include <macros.h> 66 66 67 #include "ata_hw.h" 67 68 #include "ata_bd.h" 68 69 … … 70 71 #define NAMESPACE "bd" 71 72 73 /** Number of defined legacy controller base addresses. */ 74 #define LEGACY_CTLS 4 75 72 76 /** Physical block size. Should be always 512. */ 73 77 static const size_t block_size = 512; … … 77 81 78 82 /** I/O base address of the command registers. */ 79 static uintptr_t cmd_physical = 0x1f0;83 static uintptr_t cmd_physical; 80 84 /** I/O base address of the control registers. */ 81 static uintptr_t ctl_physical = 0x170; 85 static uintptr_t ctl_physical; 86 87 /** I/O base addresses for legacy (ISA-compatible) controllers. */ 88 static ata_base_t legacy_base[LEGACY_CTLS] = { 89 { 0x1f0, 0x3f0 }, 90 { 0x170, 0x370 }, 91 { 0x1e8, 0x3e8 }, 92 { 0x168, 0x368 } 93 }; 82 94 83 95 static ata_cmd_t *cmd; … … 87 99 static disk_t disk[MAX_DISKS]; 88 100 101 static void print_syntax(void); 89 102 static int ata_bd_init(void); 90 103 static void ata_bd_connection(ipc_callid_t iid, ipc_call_t *icall); … … 110 123 int i, rc; 111 124 int n_disks; 125 unsigned ctl_num; 126 char *eptr; 112 127 113 128 printf(NAME ": ATA disk driver\n"); 114 129 115 printf("I/O address %p/%p\n", (void *) ctl_physical, 116 (void *) cmd_physical); 130 if (argc > 1) { 131 ctl_num = strtoul(argv[1], &eptr, 0); 132 if (*eptr != '\0' || ctl_num == 0 || ctl_num > 4) { 133 printf("Invalid argument.\n"); 134 print_syntax(); 135 return -1; 136 } 137 } else { 138 ctl_num = 1; 139 } 140 141 cmd_physical = legacy_base[ctl_num - 1].cmd; 142 ctl_physical = legacy_base[ctl_num - 1].ctl; 143 144 printf("I/O address %p/%p\n", (void *) cmd_physical, 145 (void *) ctl_physical); 117 146 118 147 if (ata_bd_init() != EOK) … … 139 168 continue; 140 169 141 snprintf(name, 16, "%s/ disk%d", NAMESPACE, i);170 snprintf(name, 16, "%s/ata%udisk%d", NAMESPACE, ctl_num, i); 142 171 rc = devmap_device_register(name, &disk[i].devmap_handle); 143 172 if (rc != EOK) { … … 160 189 /* Not reached */ 161 190 return 0; 191 } 192 193 194 static void print_syntax(void) 195 { 196 printf("Syntax: " NAME " <controller_number>\n"); 197 printf("Controller number = 1..4\n"); 162 198 } 163 199
Note:
See TracChangeset
for help on using the changeset viewer.