Changeset e092dc5 in mainline
- Timestamp:
- 2010-12-30T14:26:29Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e682af1
- Parents:
- d770deb
- Location:
- uspace
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/init/init.c
rd770deb re092dc5 61 61 62 62 #define DATA_FS_TYPE "fat" 63 #define DATA_DEVICE "bd/ disk0"63 #define DATA_DEVICE "bd/ata1disk0" 64 64 #define DATA_MOUNT_POINT "/data" 65 65 -
uspace/srv/bd/ata_bd/ata_bd.c
rd770deb re092dc5 71 71 #define NAMESPACE "bd" 72 72 73 /** Number of defined legacy controller base addresses. */ 74 #define LEGACY_CTLS 4 75 73 76 /** Physical block size. Should be always 512. */ 74 77 static const size_t block_size = 512; … … 78 81 79 82 /** I/O base address of the command registers. */ 80 static uintptr_t cmd_physical = 0x1f0;83 static uintptr_t cmd_physical; 81 84 /** I/O base address of the control registers. */ 82 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 }; 83 94 84 95 static ata_cmd_t *cmd; … … 88 99 static disk_t disk[MAX_DISKS]; 89 100 101 static void print_syntax(void); 90 102 static int ata_bd_init(void); 91 103 static void ata_bd_connection(ipc_callid_t iid, ipc_call_t *icall); … … 111 123 int i, rc; 112 124 int n_disks; 125 unsigned ctl_num; 126 char *eptr; 113 127 114 128 printf(NAME ": ATA disk driver\n"); 115 129 116 printf("I/O address %p/%p\n", (void *) ctl_physical, 117 (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); 118 146 119 147 if (ata_bd_init() != EOK) … … 140 168 continue; 141 169 142 snprintf(name, 16, "%s/ disk%d", NAMESPACE, i);170 snprintf(name, 16, "%s/ata%udisk%d", NAMESPACE, ctl_num, i); 143 171 rc = devmap_device_register(name, &disk[i].devmap_handle); 144 172 if (rc != EOK) { … … 161 189 /* Not reached */ 162 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"); 163 198 } 164 199 -
uspace/srv/bd/ata_bd/ata_bd.h
rd770deb re092dc5 39 39 #include <fibril_synch.h> 40 40 #include <str.h> 41 42 /** Base addresses for ATA I/O blocks. */ 43 typedef struct { 44 uintptr_t cmd; /**< Command block base address. */ 45 uintptr_t ctl; /**< Control block base address. */ 46 } ata_base_t; 41 47 42 48 /** Timeout definitions. Unit is 10 ms. */ … … 81 87 } block_coord_t; 82 88 89 /** ATA device state structure. */ 83 90 typedef struct { 84 91 bool present;
Note:
See TracChangeset
for help on using the changeset viewer.