u-bootで、ニンテンドークラシックミニがi2cやコントローラの電源としている3.3V系をaxp223が出力するようにmainline u-bootを設定してやったところ正常に動作しました。
以下は勘違いによる見解ですが、一応残しておきます。
・mainline u-boot (U-Boot 2016.11-00415-g3c980ba-dirty) with MMC
からboot.cmdでscript.binも読んでKernelを読み込んだ後,EP952とi2cできないので気づいた
ただし、内蔵u-boot改変(sunxi_flash を外してboota 0x43800000だけ残す)のを使って
write 0x43800000 boot.img, write 0x47000000 u-boot_2.bin をすると起動後i2cできる。
※内蔵u-bootを経由した場合
# i2cdetect 0 29 29
[ 115.095085] i2c i2c-0: ioctl, cmd=0x705, arg=0xbe9c8c2c
i2cdetect: WARNING! This program can confuse your I2C bus
Continue? [y/N] y
[ 116.188546] i2c i2c-0: ioctl, cmd=0x703, arg=0x29
[ 116.196477] i2c i2c-0: ioctl, cmd=0x720, arg=0xbe9c8c0c
[ 116.205036] i2c i2c-0: master_xfer[0] W, addr=0x29, len=0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:
10:
20: 29
30:
40:
50:
60:
70:
# i2cdetect 1 52 52
[ 124.764370] i2c i2c-1: ioctl, cmd=0x705, arg=0xbe99bc2c
i2cdetect: WARNING! This program can confuse your I2C bus
Continue? [y/N] y
[ 125.712091] i2c i2c-1: ioctl, cmd=0x703, arg=0x52
[ 125.719827] i2c i2c-1: ioctl, cmd=0x720, arg=0xbe99bc0c
[ 125.728379] i2c i2c-1: master_xfer[0] W, addr=0x52, len=0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00:
10:
20:
30:
40:
50: 52
60:
70:
内蔵u-bootを経由しないと、
[i2c0] START can't sendout!
になる
違い
script.binがちょっとだけ違うけど、i2cまわりは触ってない
u-bootが違う
なので、内蔵u-bootからFELに入って u-boot-sunxi-with-splを経由してからを読んだらどうなる?を試してみる。