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.

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.

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:
- Hold power button until the LED turns Green
- Keep pressing “P”, default password is “Fireport”
- Choose boot from USB


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 |