Changeset 3495c57 in rtems for c/src/libchip/flash/am29lv160.c
- Timestamp:
- 11/30/09 03:49:08 (13 years ago)
- Branches:
- 4.10, 4.11, 5, master
- Children:
- 90a0b91
- Parents:
- b1274bd9
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/libchip/flash/am29lv160.c
rb1274bd9 r3495c57 100 100 101 101 seg_8 += offset; 102 102 103 103 count = offset & (sizeof (uint32_t) - 1); 104 104 size -= count; … … 113 113 return EIO; 114 114 } 115 115 116 116 seg_32 = (volatile uint32_t*) seg_8; 117 118 count = size / sizeof (uint32_t); 117 118 count = size / sizeof (uint32_t); 119 119 size -= count * sizeof (uint32_t); 120 120 121 121 while (count--) 122 122 if (*seg_32++ != 0xffffffff) … … 128 128 return EIO; 129 129 } 130 130 131 131 seg_8 = (volatile uint8_t*) seg_32; 132 132 … … 140 140 return EIO; 141 141 } 142 142 143 143 return 0; 144 144 } … … 154 154 const rtems_am29lv160_config* ac = &rtems_am29lv160_configuration[device]; 155 155 const uint8_t* addr = ac->base; 156 156 157 157 addr += (sd->offset + (segment - sd->segment) * sd->size) + offset; 158 158 … … 181 181 if (((status1 ^ status2) & (1 << 6)) == 0) 182 182 return 0; 183 183 184 184 #if AM26LV160_ERROR_TRACE 185 185 printf ("AM26LV160: error bit detected: %p = 0x%04x\n", … … 231 231 volatile uint8_t* seg = base + offset; 232 232 rtems_interrupt_level level; 233 233 234 234 /* 235 235 * Issue a reset. 236 236 */ 237 237 *base = 0xf0; 238 238 239 239 while (size) 240 240 { … … 243 243 *(base + 0x555) = 0x55; 244 244 *(base + 0xaaa) = 0xa0; 245 *seg = *data++; 245 *seg = *data++; 246 246 rtems_interrupt_enable (level); 247 247 if (rtems_am29lv160_toggle_wait_8 (seg++) != 0) … … 268 268 269 269 size /= 2; 270 270 271 271 /* 272 272 * Issue a reset. 273 273 */ 274 274 *base = 0xf0; 275 275 276 276 while (size) 277 277 { … … 290 290 * Issue a reset. 291 291 */ 292 *base = 0xf0; 292 *base = 0xf0; 293 293 294 294 return 0; … … 376 376 volatile uint8_t* base = ac->base; 377 377 volatile uint8_t* seg = base + offset; 378 378 379 379 /* 380 380 * Issue a reset. 381 381 */ 382 382 rtems_interrupt_disable (level); 383 *base = 0xf0; 383 *base = 0xf0; 384 384 *(base + 0xaaa) = 0xaa; 385 385 *(base + 0x555) = 0x55; … … 389 389 *seg = 0x30; 390 390 rtems_interrupt_enable (level); 391 391 392 392 ret = rtems_am29lv160_toggle_wait_8 (seg); 393 393 … … 414 414 *seg = 0x30; 415 415 rtems_interrupt_enable (level); 416 416 417 417 ret = rtems_am29lv160_toggle_wait_16 (seg); 418 418 … … 448 448 { 449 449 uint32_t seg_segment; 450 450 451 451 for (seg_segment = 0; 452 452 seg_segment < dd->segments[segment].count; … … 460 460 } 461 461 } 462 462 463 463 return 0; 464 464 }
Note: See TracChangeset
for help on using the changeset viewer.