Linux on Marvell MMP

OLPC XO-1.75

OLPC XO-1.75 is a MMP2-based laptop. It’s reasonably well supported by the mainline kernel.

This page mostly applies to OLPC XO-4, a similar laptop based on MMP3, as well. Consult the OLPC XO-4 page for details about differencies.

Hardware Support

Hardware Model Status Notes
Game Keys gpio-keys Mainline  
Camera ov7670 Mainline  
Wi-Fi sd8686 Mainline  
Keyboard AP SP Mainline  
Embedded Controller xo1.75-ec Mainline  
Audio Codec rt5631 Mainline Needs the SoC I2C to work
Video Encoder hx8837 In progress  
LCD Panel ls075at011 In progress  

Firmware security

Most OLPC machines were shipped with the security system that disallows booting unsigned software. If this is the case with your machine, in order to run the OS images other than OLPC OS you’ll need to get a developer key and deactivate the security system.

The procedure is descriped in the OLPC wiki: http://wiki.laptop.org/go/Activation_and_Developer_Keys

Firmware upgrade

It is always preferrable to use an up to date firmware. The firmware images are available at http://wiki.laptop.org/go/Firmware. For the XO-1.75 laptop to boot the mainline kernel a firmware Q4E00JA or newer is needed. You can get it at http://dev.laptop.org/~quozl/q4e00ja.rom.

To update the firmware, place the .rom file on to your bootable media, connect a charged battery pack and a wall adapter, and enter the Open Firmware prompt by pressing ESC during the early boot (needs an unlocked laptop – see “Firmware security” above). Then use the “flash” command to update the firmware:

ok flash ext:\q4e00ja.rom   \ Flash the "q4e00ja.rom" from the SD card
ok flash u:\q4e00ja.rom     \ Flash the "q4e00ja.rom" from USB stick

Installing Fedora

Installing Fedora is very straightforward, since arm-image-installer supports it out-of-box. You can install it to a USB flash stick or a SD card.

The process destroys all data on the target volume, so make sure you pick the right one. Substitute sdx in command below for your actual volume. lsblk command might help you identify which one is it. Once you know the device name, you’re ready to install Fedora:

# arm-image-installer --resizefs --target=olpc_xo175 --media=/dev/sdx \
    --image=Fedora-Minimal-armhfp-32-1.6-sda.raw.xz

=====================================================
= Selected Image:
= Fedora-Minimal-armhfp-32-1.6-sda.raw.xz
= Selected Media : /dev/sdx
= U-Boot Target : olpc_xo175
=====================================================

*****************************************************
*****************************************************
******** WARNING! ALL DATA WILL BE DESTROYED ********
*****************************************************
*****************************************************

 Type 'YES' to proceed, anything else to exit now

= Proceed? YES
= Writing:
= Fedora-Minimal-armhfp-32-1.6-sda.raw.xz
= To: /dev/sdx ....
2066571264 bytes (2.1 GB, 1.9 GiB) copied, 91 s, 22.7 MB/s
0+233502 records in
0+233502 records out
2088763392 bytes (2.1 GB, 1.9 GiB) copied, 91.554 s, 22.8 MB/s
= Writing image complete!
= Copying loader scripts to boot partition

= Installation Complete! Insert into the olpc_xo175 and boot.
#

Once your machine is unlocked, it will automatically boot from your media wherever it will detect it attached to the USB bus or the SD card slot.

Installing Debian

Starting with December 2020 debian-installer nightlies, Debian produces install images for the OLPC XO-1.75 laptops. Debian installer can be started from a USB device or a SD card that can be prepared in the usual way. The target you install Debian to can also be a USB device, a SD card, or the internal eMMC.

If you haven’t installed Debian before you may find the full installation manual at https://d-i.debian.org/manual/en.armhf/index.html helpful.

For a network installation you’ll need a USB ethernet adapter and some files from netboot/SD-card-images/. Apparently, you can also do an offline image by placing an appropriate Debian ISO image on the install media and the installation using files from hd-media/SD-card-images/. I’m going to assume you’re doing a network install because ISO images of Arm nightlies don’t seem to be produced and an online installation is probably more convenient anyway.

Basically you just need to get firmware.OLPC_XO.img.gz and partition.img.gz, uncompress them and concatenate them to your install media. You can read more on that in README.concatenateable_images.

Here’s how you’d go about doing it, assuming your install media is sdx. The process destroys all data on the target volume, so make sure you pick the right one. lsblk command might help you identify the right volume:

# wget http://ftp.debian.org/debian/dists/sid/main/installer-armhf/current/images/hd-media/SD-card-images/firmware.OLPC_XO.img.gz
# gunzip firmware.OLPC_XO.img.gz
# wget http://ftp.debian.org/debian/dists/sid/main/installer-armhf/current/images/netboot/SD-card-images/partition.img.gz
# gunzip partition.img.gz
# cat firmware.OLPC_XO.img partition.img >/dev/sdx
#

That’s it, really. Once your machine is unlocked, it will automatically boot from your install media wherever it will detect it attached to the USB bus or the SD card slot.

Once Debian is installed, it will be booted automatically as well.

OLPC XO-4

OLPC XO-4 is a MMP3-based laptop. It’s reasonably well supported by the mainline kernel.

Most of what applies to OLPC XO-1.75 applies to XO-4 as well. This page deals with the differencies.

Pin Assignment

Certain signals are assigned diferently on XO-4, mostly due to extra peripherals on XO-4 laptop (such as touch screen and HDMI port) as well as MMP3 SoC (extra pins for MMC5 controller used for internal SD card slot).

Here’s the summary:

Signal Function Note
XO-1.75 XO-4  
BOOT_DEV_SEL GPIO_56 GPIO_2 eMMC or Internal SD selector
CAM_SCL GPIO_108 GPIO_165 OV7670 I2C
CAM_SDA GPIO_109 GPIO_166 OV7670 I2C
DCON_IRQ# GPIO_124 GPIO_126 HX8837
DCON_SCL GPIO_161 GPIO_168 HX8837 I2C
DCON_SDA GPIO_110 GPIO_167 HX8837 I2C
EB_MODE# GPIO_128 GPIO_130 Display rotated in e-book mode
EC_SPI_ACK GPIO_125 GPIO_113 To Embedded Controller
HP_PLUG GPIO_97 GPIO_13 Headphone
HUB_RESET# GPIO_146 GPIO_148 USB Hub Reset
VID2 GPIO_11 GPIO_123 Vcore voltage control
WLAN_PD# GPIO_57 GPIO_35 Wi-Fi Power Down
WLAN_RESET# GPIO_58 GPIO_36 Wi-Fi Reset
eMMC_RST# GPIO_149 GPIO_144 eMMC Reset
I2S_SYSCLK I2S_SYSCLK APPMU_SYSCLK Different I2S sysclk. Why?
SD1_CLK MMC3_CLK MMC5_CLK eMMC and Internal SD share MMC3 on XO-1.75. MMC5 only on MMP3
SD1_CMD MMC3_CMD MMC5_CMD
SD1_DATA0 MMC3_DATA0 MMC5_DATA_0
SD1_DATA1 MMC3_DATA1 MMC5_DATA_1
SD1_DATA2 MMC3_DATA2 MMC5_DATA_2
SD1_DATA3 MMC3_DATA3 MMC5_DATA_3
EN_eMMC_PWR#   GPIO_97 eMMC power off on XO-4 can work around MMP3 leakage issue
SOC_SEL   GPIO_3 MMP3 CPU Speed: 1 - 1GHz, 0 - 1.2GHz
MEM_SZ0   GPIO_0 Memory size: 0 - 1GB, 1 - 2GB
MEM_SZ1   GPIO_1 Memory size: always 0
HDMI_HP_DET   GPIO_14 HDMI port only on XO-4
HDMI_SCL   GPIO_4
HDMI_DAT   GPIO_5
TOUCH_BSL_RXD   UART4_TXD Touch only on XO-4
TOUCH_BSL_TXD   UART4_RXD
TOUCH_HD   GPIO_12
TOUCH_RST#   GPIO_98
TOUCH_TCK   GPIO_139
CONSOLE_RXD UART3_RXD UART2_RXD OFW/Linux Console (XO-1.75: CN8, XO-4: CN18)
CONSOLE_TXD UART3_RXD UART2_TXD OFW/Linux Console (XO-1.75: CN8, XO-4: CN18)

Dell Wyse 3020

Dell Wyse 3020 is a MMP3-based thin client, sometimes referred to as “Ariel”, “Tx0D”, “T10D”, “T20D”, etc. It’s reasonably well supported by the mainline kernel.

It comes with “WLoader” firmware, but can be flashed with Open Firmware. Open Firmware is 100% free software and provides better Device Tree support than WLoader.

Connectors

There’s a handful of connectors on the Dell Wyse 3020 board.

WLoader information screen

The UART1 serial port can be easily accessed via 0.1” pitch pin header on CN4502. UART3 and UART4 could possibly be accessed by connecting a 0.05” pich 16-pin flat cable to CN17 but the pin controller needs to be told to route the UART functions there (it defaults to GPIO). Probably not worth it.

JTAG can be accessed via CN4501.

Some of the pins have not been identified, but there can hardly be anything too useful.

CN4501

Connector near the front. Pin 1 also faces front of the machine. Marked on the PCB as follows:

CN4501
DEBUG
CONN2
Pin Number Function
1 GPIO_52
2 GPIO_51
3 GND
4  
5 JTAG_TDI
6 JTAG_TMS
7 JTAG_TCK
8 JTAG_TCK
9 JTAG_TDO
10 RESET#
11 GND
12  
13  
14 +3V
15 GPIO_64
16  

CN4502

Pin 1 faces front of the machine. Marked on the PCB as follows:

CN4502
DEBUG
CONN1
Pin Number Function
1  
2 GPIO_69
3 GND
4 UART1_RX
5 UART1_TX

CN17

Pin 1 faces front of the machine.

Pin Number Function
1 GPIO_115
2 GPIO_116
3  
4 GPIO_117
5 GPIO_118
6 GPIO_119
7 GPIO_120
8 GPIO_121
9 GPIO_122
10  
11  
12  
13  
14  
15  
16  

Hardware Support

Hardware Model Status
Embedded Controller ene-kb3930 Mainline (5.9)
Power Button ariel-pwrbutton Mainline (5.11)
Status LEDs leds-ariel Mainline (5.8)
Video Encoder ch7033 Mainline (5.8)
Power Regulator 88pm867 Mainline
RTC ds1338 Mainline
Firmware Flash w25q32 Mainline
Audio Codec ce506 Not started

Connecting the console

Connecting to the board’s console serial port is a good idea for initial installation and at least until the DRM driver is mainlined.

The UART serial port is located on the CN4502 connector with the following pinout (with the pins on the right side, the silk screen marking on the left of it):

         ___
        |   |
CN4502  | o | TX
Debug   | o | RX
Conn1   | o | GND
        | o |
B       | o |
        |___|

Configure your favorite terminal programs with 115200 baud, 8 bits, no parity and stop bits (115200 8N1) and you’re good to go.

Booting with WLoader

The device comes with a boot loader called WLoader. It’s apparently is a stripped down version of Wyse’s ThinOS, with GUI, USB and Network support, capable of loading ELF images of ThinkOS as well as Linux U-Boot-style uImages. There’s basically zero configuration for it, but aparently it reads a file called wloader.conf, which tells it which kernel and initrd to load.

WLoader information screen

To start Linux on the machine, you need to prepare an USB flash stick with a Linux installation. The process destroys all data on the target volume, so make sure you pick the right one. Substitute sdx in command below for your actual volume. lsblk command might help you identify which one is it. Once you know the device name, you’re ready to install your favourite distro. Fedora for OLPC XO-1.75 machine is fine:

# arm-image-installer --resizefs --target=olpc_xo175 --media=/dev/sdx \
    --image=Fedora-Minimal-armhfp-32-1.6-sda.raw.xz

=====================================================
= Selected Image:
= Fedora-Minimal-armhfp-32-1.6-sda.raw.xz
= Selected Media : /dev/sdx
= U-Boot Target : olpc_xo175
=====================================================

*****************************************************
*****************************************************
******** WARNING! ALL DATA WILL BE DESTROYED ********
*****************************************************
*****************************************************

 Type 'YES' to proceed, anything else to exit now

= Proceed? YES
= Writing:
= Fedora-Minimal-armhfp-32-1.6-sda.raw.xz
= To: /dev/sdx ....
2066571264 bytes (2.1 GB, 1.9 GiB) copied, 91 s, 22.7 MB/s
0+233502 records in
0+233502 records out
2088763392 bytes (2.1 GB, 1.9 GiB) copied, 91.554 s, 22.8 MB/s
= Writing image complete!
= Copying loader scripts to boot partition

= Installation Complete! Insert into the olpc_xo175 and boot.
#

Mount the boot partitions and make some room:

# mount /dev/sdx2 /mnt
# mount /dev/sdx1 /mnt/efi/
# rm -rf /mnt/efi/*
#

Create the uImages:

# cat /mnt/vmlinuz-* /mnt/dtb-*/mmp3-dell-ariel.dtb >/mnt/zImage
# mkimage -A arm -O linux -C none  -T kernel -a 0x00008000 -e 0x00008000 -d /mnt/zImage /mnt/efi/uImage
Image Name:
Created:      Tue May 12 13:24:10 2020
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    7654917 Bytes = 7475.50 KiB = 7.30 MiB
Load Address: 00008000
Entry Point:  00008000
# mkimage -A arm -O linux -C none  -T ramdisk -d /mnt/efi/initramfs-* /mnt/efi/uInitrd
Image Name:
Created:      Tue May 12 12:45:09 2020
Image Type:   ARM Linux RAMDisk Image (uncompressed)
Data Size:    51619027 Bytes = 50409.21 KiB = 49.23 MiB
Load Address: 00000000
Entry Point:  00000000

And write the boot loader configuration:

# cat >/mnt/efi/wloader.cfg <<EOF
> <TX0D_START>
>
> kernel=./uImage
> initrd=./uInitrd
> param="$(sed -n 's/^[\t ]*append //p' /mnt/extlinux/extlinux.conf)"
>
> <TX0D_END>
> EOF
# umount /mnt/efi /mnt
#

Plug in the driver in any of the machine’s USB ports and you’re ready to boot it:

  1. Hold power button until the LED turns Green
  2. Keep pressing “P”, default password is “Fireport”
  3. Choose boot from USB
Entering the password in WLoader Setting the Boot Order in WLoader

Installing Open Firmware

Flash Open Firmware:

# echo spidev >/sys/devices/platform/soc/d4000000.apb/d4035000.spi/spi_master/spi1/spi1.0/driver_override
# echo spi1.0 >/sys/devices/platform/soc/d4000000.apb/d4035000.spi/spi_master/spi1/spi1.0/driver/unbind
# echo spi1.0 >/sys/bus/spi/drivers/spidev/bind
# echo spi1.0 >/sys/bus/spi/drivers/spidev/bind
# flashrom -p linux_spi:dev=/dev/spidev1.0 -w q7c07.rom
#

MMP SoC Hardware Documentation

MMP3/MMP2 Pins

Register Pin Function 0 Function 1 Function 2 Function 3 Function 4 Function 5 Function 6 Function 7
0xd401e000 D19 USIM GPIO_102 FSIC KP_DK LCD      
0xd401e004 C19 USIM GPIO_103 FSIC KP_DK LCD      
0xd401e008 B19 USIM GPIO_142 FSIC KP_DK        
0xd401e00c A20 GPIO_124 MMC1 LCD MMC3 NAND      
0xd401e010 E20 GPIO_125 MMC1 LCD MMC3 NAND      
0xd401e014 AF11 GPIO_126 MMC1 LCD MMC3 NAND      
0xd401e018 AE10 GPIO_127   LCD MMC3 NAND      
0xd401e01c AH11 GPIO_128   LCD MMC3 NAND      
0xd401e020 AF10 GPIO_129 MMC1 LCD MMC3 NAND      
0xd401e024 AD10 GPIO_130 MMC1 LCD MMC3 NAND      
0xd401e028 D20 GPIO_131 MMC1   MSP        
0xd401e02c B20 GPIO_132 MMC1 PRI_JTAG MSP SSP3 AAS_JTAG    
0xd401e030 A21 GPIO_133 MMC1 PRI_JTAG MSP SSP3 AAS_JTAG    
0xd401e034 B21 GPIO_134 MMC1 PRI_JTAG MSP SSP3 AAS_JTAG    
0xd401e038 F20 GPIO_135   LCD MMC3 NAND      
0xd401e03c C21 GPIO_136 MMC1 PRI_JTAG MSP SSP3 AAS_JTAG    
0xd401e040 D21 GPIO_137 HDMI LCD MSP        
0xd401e044 B22 GPIO_138   LCD MMC3 SMC      
0xd401e048 AC10 GPIO_139 MMC1 PRI_JTAG MSP   AAS_JTAG    
0xd401e04c A22 GPIO_140 MMC1 LCD     UART2 UART1  
0xd401e050 C22 GPIO_141 MMC1 LCD     UART2 UART1  
0xd401e054 G21 GPIO_0 KP_MK   SPI        
0xd401e058 G22 GPIO_1 KP_MK   SPI        
0xd401e05c B23 GPIO_2 KP_MK   SPI        
0xd401e060 D22 GPIO_3 KP_MK   SPI        
0xd401e064 A23 GPIO_4 KP_MK            
0xd401e068 C23 GPIO_5 KP_MK   SPI        
0xd401e06c E23 GPIO_6 KP_MK   SPI        
0xd401e070 H22 GPIO_7 KP_MK   SPI        
0xd401e074 F23 GPIO_8 KP_MK            
0xd401e078 A24 GPIO_9 KP_MK            
0xd401e07c D23 GPIO_10 KP_MK            
0xd401e080 B24 GPIO_11 KP_MK            
0xd401e084 D24 GPIO_12 KP_MK   CCIC1        
0xd401e088 G23 GPIO_13 KP_MK   CCIC1        
0xd401e08c J22 GPIO_14 KP_MK   CCIC1        
0xd401e090 E24 GPIO_15 KP_MK KP_DK CCIC1        
0xd401e094 G24 GPIO_16 KP_DK ROT CCIC1        
0xd401e098 F24 GPIO_17 KP_DK ROT CCIC1        
0xd401e09c H23 GPIO_18 KP_DK ROT CCIC1        
0xd401e0a0 A25 GPIO_19 KP_DK ROT CCIC1        
0xd401e0a4 B25 GPIO_20 KP_DK TB CCIC1        
0xd401e0a8 K22 GPIO_21 KP_DK TB CCIC1        
0xd401e0ac C25 GPIO_22 KP_DK TB CCIC1        
0xd401e0b0 D25 GPIO_23 KP_DK TB CCIC1        
0xd401e0b4 E25 GPIO_24 I2S VCXO_OUT          
0xd401e0b8 G25 GPIO_25 I2S HDMI SSPA2        
0xd401e0bc J23 GPIO_26 I2S HDMI SSPA2        
0xd401e0c0 H24 GPIO_27 I2S HDMI SSPA2        
0xd401e0c4 L22 GPIO_28 I2S   SSPA2        
0xd401e0c8 A26 GPIO_29 UART1 KP_MK       AAS_SPI  
0xd401e0cc B26 GPIO_30 UART1 KP_MK       AAS_SPI  
0xd401e0d0 K23 GPIO_31 UART1 KP_MK       AAS_SPI  
0xd401e0d4 C26 GPIO_32 UART1 KP_MK       AAS_SPI  
0xd401e0d8 D26 GPIO_33 SSPA2 I2S          
0xd401e0dc B27 GPIO_34 SSPA2 I2S          
0xd401e0e0 J24 GPIO_35 SSPA2 I2S          
0xd401e0e4 M22 GPIO_36 SSPA2 I2S          
0xd401e0e8 H25 GPIO_37 MMC2 SSP1 TWSI2 UART2 UART3 AAS_SPI AAS_TWSI
0xd401e0ec C27 GPIO_38 MMC2 SSP1 TWSI2 UART2 UART3 AAS_SPI AAS_TWSI
0xd401e0f0 L23 GPIO_39 MMC2 SSP1 TWSI2 UART2 UART3 AAS_SPI AAS_TWSI
0xd401e0f4 C28 GPIO_40 MMC2 SSP1 TWSI2 UART2 UART3 AAS_SPI AAS_TWSI
0xd401e0f8 N21 GPIO_41 MMC2 TWSI5          
0xd401e0fc D27 GPIO_42 MMC2 TWSI5          
0xd401e100 F26 GPIO_43 TWSI2 UART4 SSP1 UART2 UART3   AAS_TWSI
0xd401e104 G26 GPIO_44 TWSI2 UART4 SSP1 UART2 UART3   AAS_TWSI
0xd401e108 E27 GPIO_45 UART1 UART4 SSP1 UART2 UART3    
0xd401e10c K24 GPIO_46 UART1 UART4 SSP1 UART2 UART3    
0xd401e110 H26 GPIO_47 UART2 SSP2 TWSI6 CAM2 AAS_SPI AAS_GPIO  
0xd401e114 N22 GPIO_48 UART2 SSP2 TWSI6 CAM2 AAS_SPI AAS_GPIO  
0xd401e118 M23 GPIO_49 UART2 SSP2 PWM CCIC2 AAS_SPI    
0xd401e11c F27 GPIO_50 UART2 SSP2 PWM CCIC2 AAS_SPI    
0xd401e120 J25 GPIO_51 UART3 ROT AAS_GPIO PWM      
0xd401e124 D28 GPIO_52 UART3 ROT AAS_GPIO PWM      
0xd401e128 E28 GPIO_53 UART3 TWSI2 VCXO_REQ   PWM   AAS_TWSI
0xd401e12c L24 GPIO_54 UART3 TWSI2 VCXO_OUT HDMI PWM   AAS_TWSI
0xd401e130 F28 GPIO_55 SSP2 SSP1 UART2 ROT TWSI2 SSP3 AAS_TWSI
0xd401e134 G27 GPIO_56 SSP2 SSP1 UART2 ROT TWSI2 KP_DK AAS_TWSI
0xd401e138 P22 GPIO_57 SSP2_RX SSP1_TXRX SSP2_FRM SSP1_RX VCXO_REQ KP_DK  
0xd401e13c G28 GPIO_58 SSP2 SSP1_RX SSP1_FRM SSP1_TXRX VCXO_REQ KP_DK  
0xd401e140 L26 TWSI1             # XXX
0xd401e144 K28 TWSI1             # XXX
0xd401e148 R23 GPIO_123 SLEEP_IND ONE_WIRE 32K_CLKOUT        
0xd401e14c L28 PRI_JTAG GPIO_156 PWM          
0xd401e150 N25 PRI_JTAG GPIO_157 PWM          
0xd401e154 M27 PRI_JTAG GPIO_158 PWM          
0xd401e158 N26 PRI_JTAG GPIO_159 PWM          
0xd401e15c M28 PRI_JTAG              
0xd401e160 L27 G_CLKREQ ONE_WIRE            
0xd401e164 U21 G_CLKOUT 32K_CLKOUT HDMI          
0xd401e168 N27 VCXO_REQ ONE_WIRE PLL          
0xd401e16c T24 VCXO_OUT 32K_CLKOUT            
0xd401e170 W23 GPIO_74 LCD SMC MMC4 SSP3 UART2 UART4 TIPU
0xd401e174 V25 GPIO_75 LCD SMC MMC4 SSP3 UART2 UART4 TIPU
0xd401e178 W22 GPIO_76 LCD SMC MMC4 SSP3 UART2 UART4 TIPU
0xd401e17c Y25 GPIO_77 LCD SMC MMC4 SSP3 UART2 UART4 TIPU
0xd401e180 W24 GPIO_78 LCD HDMI MMC4   SSP4 AAS_SPI TIPU
0xd401e184 Y22 GPIO_79 LCD AAS_GPIO MMC4   SSP4 AAS_SPI TIPU
0xd401e188 Y23 GPIO_80 LCD AAS_GPIO MMC4   SSP4 AAS_SPI TIPU
0xd401e18c Y24 GPIO_81 LCD AAS_GPIO MMC4   SSP4 AAS_SPI TIPU
0xd401e190 AA20 GPIO_82 LCD   MMC4     CCIC2 TIPU
0xd401e194 AA24 GPIO_83 LCD   MMC4     CCIC2 TIPU
0xd401e198 AA23 GPIO_84 LCD SMC MMC2   TWSI5 AAS_TWSI TIPU
0xd401e19c AB21 GPIO_85 LCD SMC MMC2   TWSI5 AAS_TWSI TIPU
0xd401e1a0 AB24 GPIO_86 LCD SMC MMC2   TWSI6 CCIC2 TIPU
0xd401e1a4 AA25 GPIO_87 LCD SMC MMC2   TWSI6 CCIC2 TIPU
0xd401e1a8 AB22 GPIO_88 LCD AAS_GPIO MMC2     CCIC2 TIPU
0xd401e1ac AB25 GPIO_89 LCD AAS_GPIO MMC2     CCIC2 TIPU
0xd401e1b0 AB23 GPIO_90 LCD AAS_GPIO MMC2     CCIC2 TIPU
0xd401e1b4 AB27 GPIO_91 LCD AAS_GPIO MMC2     CCIC2 TIPU
0xd401e1b8 AB28 GPIO_92 LCD AAS_GPIO MMC2     CCIC2 TIPU
0xd401e1bc AB20 GPIO_93 LCD AAS_GPIO MMC2     CCIC2 TIPU
0xd401e1c0 AC24 GPIO_94 LCD AAS_GPIO SPI   AAS_SPI CCIC2 TIPU
0xd401e1c4 AC21 GPIO_95 LCD TWSI3 SPI AAS_DEU_EX AAS_SPI CCIC2 TIPU
0xd401e1c8 AC23 GPIO_96 LCD TWSI3 SPI AAS_DEU_EX AAS_SPI   TIPU
0xd401e1cc AA19 GPIO_97 LCD TWSI6 SPI AAS_DEU_EX AAS_SPI   TIPU
0xd401e1d0 EC25 GPIO_98 LCD TWSI6 SPI ONE_WIRE     TIPU
0xd401e1d4 AC27 GPIO_99 LCD SMC SPI TWSI5     TIPU
0xd401e1d8 AC26 GPIO_100 LCD SMC SPI TWSI5     TIPU
0xd401e1dc AB19 GPIO_101 LCD SMC SPI       TIPU
0xd401e1e0 AF28 NAND GPIO_168 MMC3          
0xd401e1e4 AF25 NAND GPIO_167 MMC3          
0xd401e1e8 AF26 NAND GPIO_166 MMC3          
0xd401e1ec AE23 NAND GPIO_165 MMC3          
0xd401e1f0 AE21 NAND GPIO_107     NAND      
0xd401e1f4 AF27 NAND GPIO_106     NAND      
0xd401e1f8 AE22 NAND GPIO_105     NAND      
0xd401e1fc AE25 NAND GPIO_104     NAND      
0xd401e200 AE26 NAND GPIO_111 MMC3          
0xd401e204 AD25 NAND GPIO_164 MMC3          
0xd401e208 AD28 NAND GPIO_163 MMC3          
0xd401e20c AD24 NAND GPIO_162 MMC3          
0xd401e210 AD26 NAND GPIO_161     NAND      
0xd401e214 AD25 NAND GPIO_110     NAND      
0xd401e218 AD24 NAND GPIO_109     NAND      
0xd401e21c AD23 NAND GPIO_108     NAND      
0xd401e220 AF23 NAND GPIO_143 SMC   NAND      
0xd401e224 AF24 NAND GPIO_144 SMC_INT SMC NAND      
0xd401e228 AC19 SMC GPIO_145     SMC      
0xd401e22c AC20 SMC GPIO_146     SMC      
0xd401e230 AG25 NAND GPIO_147     NAND      
0xd401e234 AG26 NAND GPIO_148     NAND      
0xd401e238 AA16 NAND GPIO_149            
0xd401e23c AH26 NAND GPIO_150     NAND      
0xd401e240 AG24 SMC GPIO_151 MMC3          
0xd401e244 AH25 NAND GPIO_112 MMC3 SMC        
0xd401e248 AC18 SMC GPIO_152     SMC      
0xd401e24c AD18 SMC GPIO_153     SMC      
0xd401e250 AH24 NAND GPIO_160 SMC   NAND      
0xd401e254 AB17 SMC_INT GPIO_154 SMC   NAND      
0xd401e258 AE19 EXT_DMA GPIO_155 SMC   EXT_DMA      
0xd401e25c AC17 SMC GPIO_113 EXT_DMA MMC3 SMC HDMI    
0xd401e260 N23 GPIO_115   AC UART4 UART3 SSP1    
0xd401e264 H27 GPIO_116   AC UART4 UART3 SSP1    
0xd401e268 H28 GPIO_117   AC UART4 UART3 SSP1    
0xd401e26c J28 GPIO_118   AC UART4 UART3 SSP1    
0xd401e270 M24 GPIO_119   CA SSP3        
0xd401e274 J27 GPIO_120   CA SSP3        
0xd401e278 K26 GPIO_121   CA SSP3        
0xd401e27c L25 GPIO_122   CA SSP3        
0xd401e280 AD13 GPIO_59 CCIC1 ULPI MMC3 CCIC2 UART3 UART4  
0xd401e284 AE13 GPIO_60 CCIC1 ULPI MMC3 CCIC2 UART3 UART4  
0xd401e288 AF13 GPIO_61 CCIC1 ULPI MMC3 CCIC2 UART3 HDMI  
0xd401e28c AH13 GPIO_62 CCIC1 ULPI MMC3 CCIC2 UART3    
0xd401e290 AG13 GPIO_63 CCIC1 ULPI MMC3 CCIC2 MSP UART4  
0xd401e294 AC12 GPIO_64 CCIC1 ULPI MMC3 CCIC2 MSP UART4  
0xd401e298 AD12 GPIO_65 CCIC1 ULPI MMC3 CCIC2 MSP UART4  
0xd401e29c AE12 GPIO_66 CCIC1 ULPI MMC3 CCIC2 MSP UART4  
0xd401e2a0 AF12 GPIO_67 CCIC1 ULPI MMC3 CCIC2 MSP    
0xd401e2a4 AG12 GPIO_68 CCIC1 ULPI MMC3 CCIC2 MSP LCD  
0xd401e2a8 AH12 GPIO_69 CCIC1 ULPI MMC3 CCIC2   LCD  
0xd401e2ac AC11 GPIO_70 CCIC1 ULPI MMC3 CCIC2 MSP LCD  
0xd401e2b0 AD11 GPIO_71 TWSI3   PWM     LCD AAS_TWSI
0xd401e2b4 AG11 GPIO_72 TWSI3 HDMI PWM     LCD AAS_TWSI
0xd401e2b8 AE11 GPIO_73 VCXO_REQ 32K_CLKOUT PWM VCXO_OUT   LCD  
0xd401e2bc D18 TWSI4 LCD            
0xd401e2c0 A19 TWSI4 LCD            

Hardware Support

Hardware Model Status Notes
SMP (mmp3) mmp3-smp Mainline  
L2 Cache (mmp2) tauros2 Mainline  
L2 Cache (mmp3) tauros3 Mainline  
USB 2.0 pxau2o-ehci Mainline  
USB 2.0 PHY (mmp2) mmp2-usb-phy Mainline  
USB 2.0 PHY (mmp3) mmp3-usb-phy Mainline  
MMC pxav3-mmc Mainline  
Camera Controller mmp2-ccic Mainline  
Audio DMA adma-1.0 Mainline  
Peripheral DMA pdma-1.0 Mainline  
UART xscale-uart Mainline  
GPIO mmp2-gpio Mainline  
I2S mmp-twsi Mainline  
RTC mmp-rtc Mainline  
SPI mmp2-ssp Mainline  
Audio SRAM mmio-sram Mainline  
3D GPU (mmp2) gc860 Mainline Needs power domains (In progress)
3D GPU (mmp3) gc2000 Mainline Needs power domains (In progress)
3D GPU (mmp3) gc320 Mainline Needs power domains (In progress)
MMP3 Thermal mmp3-thermal In progress  
Display Controller armada-lcdc In progress  
USB HSIC PHY (mmp3) mmp3-hsic-phy In progress  
Audio Clocks mmp2-audio-clock In progress  
Audio I2S mmp-sspa In progress  
Randomness Source mmp2-rng In progress