Changes

4,270 bytes added ,  11:31, 31 August 2015
no edit summary
Line 271: Line 271:  
All other registers seem to be left unaffected (including the the extra IRQ flags in 4004900h); though there may be some further hidden effects (like aborting transfers or resetting internal registers).<br>
 
All other registers seem to be left unaffected (including the the extra IRQ flags in 4004900h); though there may be some further hidden effects (like aborting transfers or resetting internal registers).<br>
 
Note: The DSi firmware does issue reset by toggling both bit0 and bit1, although bit1 does seem to be read-only (always 1), and trying to clear that bit doesn't seem to have any effect at all.
 
Note: The DSi firmware does issue reset by toggling both bit0 and bit1, although bit1 does seem to be read-only (always 1), and trying to clear that bit doesn't seem to have any effect at all.
 +
 +
== DSi SD/MMC I/O Ports: Unknown/Unused Registers ==
 +
 +
===40048F6h/4004AF6h - Firmware tests bit0 (but, always 0?) (RESERVED4)===
 +
  15-1  Unknown (0)
 +
  0      Unknown (tested by firmware) (usually 0)      (R)
 +
 +
===4004836h/4004A36h - SD_CARD_INTERRUPT_CONTROL ---- USED by SDIO===
 +
4004A36h is used in SDIO IRQ handler.<br>
 +
On DSi, this register looks as so:
 +
  15-2  Unknown (0)
 +
  1      Unknown (gets set automatically after 2 seconds?) (and also R/W ?)
 +
  0      Unknown (usually always 0) (tested by firmware?)              (R?)
 +
Whilst old toshiba datasheets specify it as so:
 +
  15-13  ?      Unknown (zero on DSi)
 +
  12    CINT0  SDIO Interrupt Flag (0=none/ack, 1=irq)  (/IRQ aka Data1 pin)
 +
  11-9  ?      Unknown (zero on DSi)
 +
  8      CIMSK0 SDIO Interrupt Mask (0=enable, 1=disable) (/IRQ aka Data1 pin)
 +
  7-0    ?      Unknown (zero on DSi)
 +
Acknowledge by writing CINT0=0, or CIMSK0=1 (uh, really?), or hard reset (unlike as for other SD/MMC interrupts, soft reset does not acknowlege this interrupt type?).
 +
 +
===4004838h/4004A38h - SDCTL_CLK_AND_WAIT_CTL ---- USED by SDIO===
 +
4004A38h is used in SDIO IRQ handler.<br>
 +
On DSi, this register looks as so (usually zero):
 +
  15-14  Unknown (usually 0)                            (R/W)
 +
  13-3  Unknown (0)
 +
  2-0    Unknown (usually 0)                            (R/W)
 +
Whilst old toshiba datasheets specify it as so:
 +
  15-0  Unknown (bit8 should be set after SD_CARD_CLK_CTL change?)
 +
 +
Below registers don't seem to be used by existing software...
 +
 +
===4004834h/4004A34h - SD_TRANSACTION_CTL - Transaction Control===
 +
  15-10 Unknown/unused (appears to be always zero)
 +
  9-8  Unknown                                    (R/W)
 +
  7-3  Unknown/unused (appears to be always zero)
 +
  2    Unknown                                    (R/W)
 +
  1    Unknown/unused (appears to be always zero)
 +
  0    Unknown                                    (R/W)
 +
 +
===40048F2h/4004AF2h - Can be 0003h===
 +
  15-2  Unknown (0)
 +
  1-0    Unknown (0..3)                                (R/W)
 +
 +
===40048F4h/4004AF4h - Can be 0770h===
 +
  15-11  Unknown (0)
 +
  10-8  Unknown (0..7)                                (R/W)
 +
  7      Unknown (0)
 +
  6-4    Unknown (0..7)                                (R/W)
 +
  3-0    Unknown (0)
 +
 +
===40048FAh - Can be 0004h..0007h (nonzero, unlike SDIO) (RESERVED6)===
 +
  15-3  Unknown (0)
 +
  2      Unknown (usually set)                          (R)
 +
  1-0    Unknown (0..3)                                (R/W? or rather R?)
 +
 +
===40048FCh/4004AFCh - Can be 0024h..00FFh? (RESERVED7)===
 +
===40048FEh/4004AFEh - Can be 0024h..00FFh? (RESERVED8 / TC6371AF:Revision)===
 +
  15-8  Unknown (0)
 +
  7-0    Can be 24h..FFh      parts (R) and parts (R/W)?
 +
 +
===Unused Registers with Fixed value (all bits read-only, or write-only)===
 +
  400482Ah/4004A2Ah 2    Fixed always zero?
 +
  4004832h/4004A32h 2    Fixed always zero?  ;(TC6371AF:BUF1 Data MSBs?)
 +
  400483Ah/4004A3Ah 2    Fixed always zero?  ;(SDCTL_SDIO_HOST_INFORMATION)
 +
  400483Ch/4004A3Ch 2    Fixed always zero?  ;(SDCTL_ERROR_CONTROL)
 +
  400483Eh/4004A3Eh 2    Fixed always zero?  ;(TC6387XB: LED_CONTROL)
 +
  4004840h/4004A40h 2    Fixed always 003Fh?
 +
  4004842h/4004A42h 2    Fixed always 002Ah?
 +
  4004844h/4004A44h 6Eh  Fixed always zerofilled?
 +
  40048B2h/4004AB2h 2    Fixed always FFFFh?
 +
  40048B4h/4004AB4h 6    Fixed always zerofilled?
 +
  40048BAh/4004ABAh 2    Fixed always 0200h?
 +
  40048BCh/4004ABCh 1Ch  Fixed always zerofilled?
 +
  40048DAh/4004ADAh 6    Fixed always zerofilled?
 +
  40048E2h/4004AE2h 2    Fixed always 0009h?  ;(RESERVED2/9, TC6371AF:CORE_REV)
 +
  40048E4h/4004AE4h 2    Fixed always zero?
 +
  40048E6h/4004AE6h 2    Fixed always zero?  ;(RESERVED3, TC6371AF:BUF_ADR)
 +
  40048E8h/4004AE8h 2    Fixed always zero?  ;(TC6371AF:Resp_Header)
 +
  40048EAh/4004AEAh 6    Fixed always zerofilled?
 +
  40048F0h/4004AF0h 2    Fixed always zero?  ;(RESERVED10)
 +
  40048F8h          2    Fixed always 0004h?  (unlike SDIO) (RESERVED5)
 +
  4004AF8h          2    Fixed always zero?    (unlike SD)  (RESERVED5)
 +
  4004AFAh          2    Fixed always zero?    (unlike SD)  (RESERVED6)
 +
  4004902h/4004B02h 2    Fixed always zero?
 +
  4004906h/4004B06h 2    Fixed always zero?
 +
  400490Ah/4004B0Ah 2    Fixed always zero?
 +
  4004910h/4004B10h F0h  Fixed always zerofilled?
108

edits