Changes

Jump to navigation Jump to search
m
Reverted edits by IMacros (Talk) to last version by Bushing
Line 1: Line 1: −
これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック
+
{{Infobox MMIO
 
+
| arm = Full
=これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック=
+
| base = 0x0d010000
==これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック==
+
| len = 0x1C
===これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック===
+
| bits = 32
これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック
+
| armirq = 1
====これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック=====
+
}}
 
+
== Register List ==
これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック
+
{{reglist|NAND Interface}}
 
+
{{rla|0x0d010000|32|NAND_CTRL|NAND Control and Status}}
[[これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック]]
+
{{rla|0x0d010004|32|NAND_CONFIG|??}}
 
+
{{rla|0x0d010008|32|NAND_ADDR1|Address bytes 1-2 (column)}}
[これは日本のニンテンドーfucking !私は神のCEOは、午前くそー!お客様の製品やfucking私fucking私のfuckingの雌ロバが改造停止を訴える!あなたファック]
+
{{rla|0x0d01000c|32|NAND_ADDR2|Address bytes 3-5 (row)}}
 +
{{rla|0x0d010010|32|NAND_DATABUF|Memory address of the Data buffer}}
 +
{{rla|0x0d010014|32|NAND_ECCBUF|Memory address of the Spare buffer}}
 +
{{rla|0x0d010018|32|NAND_UNK|Unknown}}
 +
|}
 +
== Register Details ==
 +
{{reg32 | NAND_CTRL | addr = 0x0d010000 | hifields = 9 | lofields = 5 |
 +
|1|1|1|1|1|1|1|1|8|
 +
|R/W|W|U|W|W|W|W|W|W|
 +
|EXEC|IRQ||A5|A4|A3|A2|A1|COMMAND||
 +
|1|1|1|1|12|
 +
|W|W|W|W|W|
 +
|WAIT|WR|RD|ECC|DMALEN|
 +
}}
 +
This register controls the state of the NAND interface.
 +
{{regdesc
 +
|EXEC|Write 1: initiate NAND command<br/>Read: NAND interface busy
 +
|IRQ|Set to enable IRQ generation when command is complete
 +
|A5|Send fifth address byte (typ. row address high)
 +
|A4|Send fourth address byte (typ. row address mid)
 +
|A3|Send third address byte (typ. row address low)
 +
|A2|Send second address byte (typ. column address high)
 +
|A1|Send first address byte (typ. column address low)
 +
|COMMAND|8-bit NAND command
 +
|WAIT|Wait for R/B to go high between address and data phases (wait for read/write/erase){{check}}
 +
|WR|Transfer data to the NAND chip{{check}}
 +
|RD|Transfer data from the NAND chip{{check}}
 +
|ECC|Calculate ECC or transfer ECC data or ?? {{check}}
 +
|DMALEN|Number of bytes to transfer
 +
}}
 +
----
 +
{{reg32 | NAND_CONFIG | addr = 0x0d010004 | hifields = 4 | lofields = 2 |
 +
|4|1|4|8|
 +
|R/W|R/W|R/W|R/W|
 +
|ATTR0|ENABLE|ATTR1|ATTR2||
 +
|8|8|
 +
|R/W|R/W|
 +
|ATTR3|ATTR4|
 +
}}
 +
This register probably configures certain aspects of the NAND interface (timings?){{check}}.
 +
{{regdesc
 +
|ATTR0|Set based on lookup table; set to 3 for 128MB NAND chips, 4 otherwise
 +
|ENABLE|Set to 1 before first command is sent to NAND, set to 0 when de-initializing the NAND driver.
 +
|ATTR1|Set based on lookup table; always 0x3
 +
|ATTR2|Set based on lookup table; always 0x3e
 +
|ATTR3|Set based on lookup table; always 0x0e
 +
|ATTR4|Set based on lookup table; always 0x7f
 +
}}
 +
When IOS initializes the NAND driver, it turns on the enable bit (writing 0x08000000) and then send the GET CHIP ID command (0x90).  Based on the reply, it looks up the correct definitions of the other attributes and pokes them into this register (generally, 0x4b3e0e7f).
 +
----
 +
{{reg32 | NAND_ADDR1 | addr = 0x0d010008 | hifields = 1 | lofields = 2 |
 +
|16|
 +
|U|
 +
|||
 +
|8|8|
 +
|R/W|R/W|
 +
|ADDR2|ADDR1|
 +
}}
 +
This register contains the first two address bytes that can be sent to the NAND chip. Normally it contains the column address (offset within a page).
 +
{{regdesc
 +
|ADDR2|Second address byte
 +
|ADDR1|First address byte
 +
}}
 +
----
 +
{{reg32 | NAND_ADDR2 | addr = 0x0d01000c | hifields = 2 | lofields = 2 |
 +
|8|8|
 +
|U|R/W|
 +
||ADDR5||
 +
|8|8|
 +
|R/W|R/W|
 +
|ADDR4|ADDR3|
 +
}}
 +
This register contains the last three address bytes that can be sent to the NAND chip. Normally it contains the row address (page number).
 +
{{regdesc
 +
|ADDR5|Fifth address byte
 +
|ADDR4|Fourth address byte
 +
|ADDR3|Third address byte
 +
}}
 +
----
 +
{{regsimple | NAND_DATABUF | addr = 0x0d010010 | bits = 32 | access = R/W }}
 +
This register contains the DMA address of the page data buffer (0x800 bytes)
 +
----
 +
{{regsimple | NAND_ECCBUF | addr = 0x0d010014 | bits = 32 | access = R/W }}
 +
This register contains the DMA address of the spare and ECC data buffer (0x40 spare bytes + 0x10 bytes of hardware-calculated ECC syndrome).
 +
----
 +
{{regsimple | NAND_UNK | addr = 0x0d010018 | bits = 32 | access = R/W }}
 +
This register has an unknown function; boot2 writes 1 to it when reloading to a new IOS.

Navigation menu