Changeset 3738
- Timestamp:
- 12/27/07 00:08:04 (5 years ago)
- File:
-
- 1 edited
-
trunk/src/host/qemu-neo1973/hw/ar6000.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/host/qemu-neo1973/hw/ar6000.c
r3736 r3738 304 304 /* We accept any voltage. 10000 V is nothing. */ 305 305 if (req.arg) { 306 sd->state = sd_ ready_state;306 sd->state = sd_initialization_state; 307 307 sd->sdio_ok = 1; 308 308 } … … 457 457 } 458 458 459 sd->card_status &= ~ CARD_STATUS_B;459 sd->card_status &= ~(COM_CRC_ERROR | ILLEGAL_COMMAND); /* B type */ 460 460 461 461 rtype = sdio_normal_command(sd, *req); … … 587 587 return sd->state == sd_transfer_state; 588 588 } 589 590 #define SDIO_CIS_START 0x1000 589 591 590 592 static void sdio_cccr_write(struct sdio_s *sd, uint32_t offset, uint8_t value) … … 661 663 switch (offset) { 662 664 case 0x00: /* CCCR/SDIO Revison */ 663 return 0x32; 665 return 0x32; /* SDIO Specification Version 2.00, CCCR/FBR V 1.20 */ 664 666 665 667 case 0x01: /* SD Specification Revision */ … … 683 685 case 0x08: /* Card Capability */ 684 686 /* XXX: set SDC (01) when CMD52 learns to preserve current_cmd */ 687 /* XXX: need to addr ReadWait support too (RWC (04)) */ 685 688 return 0x12 | sd->cccr.e4mi; /* SMB | S4MI | E4MI | Full-Speed */ 686 689 687 690 case 0x09: /* Common CIS Pointer */ 691 return (SDIO_CIS_START >> 0) & 0xff; 688 692 case 0x0a: /* Common CIS Pointer */ 693 return (SDIO_CIS_START >> 8) & 0xff; 689 694 case 0x0b: /* Common CIS Pointer */ 690 return 0x00; /* Starts at 0x1000 */695 return (SDIO_CIS_START >> 16) & 0xff; 691 696 692 697 case 0x1c: /* Bus Suspend */ … … 769 774 770 775 /* RFU */ 771 if (len && unlikely(addr < 0x1000)) {772 llen = sd->transfer.step ? MIN(len, 0x1000- addr) : len;776 if (len && unlikely(addr < SDIO_CIS_START)) { 777 llen = sd->transfer.step ? MIN(len, SDIO_CIS_START - addr) : len; 773 778 memset(data, 0, llen); 774 779 data += llen; 775 780 len -= llen; 776 addr = 0x1000;781 addr = SDIO_CIS_START; 777 782 } 778 783 779 784 /* CIS */ 780 addr -= 0x1000;785 addr -= SDIO_CIS_START; 781 786 if (len && addr < sd->cislen) { 782 787 llen = MIN(len, sd->cislen - addr); … … 856 861 /* TODO: dump real values from an Atheros AR6001 - need hw access! */ 857 862 const static uint8_t ar6k_cis[] = { 863 CISTPL_DEVICE, 3, /* Not SDIO standard */ 864 0x00, 0x00, 0x00, /* TODO */ 865 858 866 CISTPL_MANFID, 4, 859 0x 0a, 0x01, /* SDIO Card manufacturer code */860 0x 71, 0x02, /* Manufacturer information (Part No, Rev) */867 0x71, 0x02, /* SDIO Card manufacturer code */ 868 0x0a, 0x01, /* Manufacturer information (Part No, Rev) */ 861 869 862 870 CISTPL_FUNCID, 2, 863 871 0x0c, /* Card funcion code: SDIO */ 864 872 0x00, /* System initialization mask */ 873 874 CISTPL_FUNCE, 4, 875 0x00, /* Type of extended data: Function 0 */ 876 0x00, 0x08, /* Max. block size/byte count for Fn0: 2048 */ 877 0x32, /* Max. transfer rate per line: 25 Mb/Sec */ 865 878 866 879 CISTPL_END, 0xff,
Note: See TracChangeset
for help on using the changeset viewer.
