^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * linux/arch/arm/mach-pxa/mxm8x10.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Support for the Embedian MXM-8x10 Computer on Module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Copyright (C) 2006 Marvell International Ltd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Copyright (C) 2009 Embedian Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * Copyright (C) 2009 TMT Services & Supplies (Pty) Ltd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * 2007-09-04: eric miao <eric.y.miao@gmail.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * rewrite to align with latest kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * 2010-01-09: Edwin Peer <epeer@tmtservices.co.za>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * Hennie van der Merwe <hvdmerwe@tmtservices.co.za>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * rework for upstream merge
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #include <linux/serial_8250.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #include <linux/dm9000.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #include <linux/gpio/machine.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #include <linux/platform_data/i2c-pxa.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #include <linux/platform_data/mtd-nand-pxa3xx.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #include <linux/platform_data/video-pxafb.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #include <linux/platform_data/mmc-pxamci.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #include <linux/platform_data/usb-ohci-pxa27x.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #include "pxa320.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #include "mxm8x10.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #include "devices.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #include "generic.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) /* GPIO pin definition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) External device stuff - Leave unconfigured for now...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ---------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) GPIO0 - DREQ (External DMA Request)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) GPIO3 - nGCS2 (External Chip Select) Where is nGCS0; nGCS1; nGCS4; nGCS5 ?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) GPIO4 - nGCS3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) GPIO15 - EXT_GPIO1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) GPIO16 - EXT_GPIO2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) GPIO17 - EXT_GPIO3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) GPIO24 - EXT_GPIO4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) GPIO25 - EXT_GPIO5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) GPIO26 - EXT_GPIO6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) GPIO27 - EXT_GPIO7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) GPIO28 - EXT_GPIO8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) GPIO29 - EXT_GPIO9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) GPIO30 - EXT_GPIO10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) GPIO31 - EXT_GPIO11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) GPIO57 - EXT_GPIO12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) GPIO74 - EXT_IRQ1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) GPIO75 - EXT_IRQ2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) GPIO76 - EXT_IRQ3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) GPIO77 - EXT_IRQ4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) GPIO78 - EXT_IRQ5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) GPIO79 - EXT_IRQ6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) GPIO80 - EXT_IRQ7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) GPIO81 - EXT_IRQ8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) GPIO87 - VCCIO_PWREN (External Device PWREN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) Dallas 1-Wire - Leave unconfigured for now...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) -------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) GPIO0_2 - DS - 1Wire
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) Ethernet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) GPIO1 - DM9000 PWR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) GPIO9 - DM9K_nIRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) GPIO36 - DM9K_RESET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) Keypad - Leave unconfigured by for now...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) ------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) GPIO1_2 - KP_DKIN0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) GPIO5_2 - KP_MKOUT7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) GPIO82 - KP_DKIN1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) GPIO85 - KP_DKIN2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) GPIO86 - KP_DKIN3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) GPIO113 - KP_MKIN0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) GPIO114 - KP_MKIN1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) GPIO115 - KP_MKIN2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) GPIO116 - KP_MKIN3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) GPIO117 - KP_MKIN4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) GPIO118 - KP_MKIN5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) GPIO119 - KP_MKIN6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) GPIO120 - KP_MKIN7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) GPIO121 - KP_MKOUT0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) GPIO122 - KP_MKOUT1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) GPIO122 - KP_MKOUT2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) GPIO123 - KP_MKOUT3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) GPIO124 - KP_MKOUT4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) GPIO125 - KP_MKOUT5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) GPIO127 - KP_MKOUT6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) Data Bus - Leave unconfigured for now...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) GPIO2 - nWait (Data Bus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) USB Device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) ----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) GPIO4_2 - USBD_PULLUP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) GPIO10 - UTM_CLK (USB Device UTM Clk)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) GPIO49 - USB 2.0 Device UTM_DATA0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) GPIO50 - USB 2.0 Device UTM_DATA1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) GPIO51 - USB 2.0 Device UTM_DATA2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) GPIO52 - USB 2.0 Device UTM_DATA3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) GPIO53 - USB 2.0 Device UTM_DATA4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) GPIO54 - USB 2.0 Device UTM_DATA5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) GPIO55 - USB 2.0 Device UTM_DATA6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) GPIO56 - USB 2.0 Device UTM_DATA7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) GPIO58 - UTM_RXVALID (USB 2.0 Device)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) GPIO59 - UTM_RXACTIVE (USB 2.0 Device)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) GPIO60 - UTM_RXERROR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) GPIO61 - UTM_OPMODE0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) GPIO62 - UTM_OPMODE1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) GPIO71 - USBD_INT (USB Device?)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) GPIO73 - UTM_TXREADY (USB 2.0 Device)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) GPIO83 - UTM_TXVALID (USB 2.0 Device)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) GPIO98 - UTM_RESET (USB 2.0 device)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) GPIO99 - UTM_XCVR_SELECT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) GPIO100 - UTM_TERM_SELECT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) GPIO101 - UTM_SUSPENDM_X
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) GPIO102 - UTM_LINESTATE0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) GPIO103 - UTM_LINESTATE1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) Card-Bus Interface - Leave unconfigured for now...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) ------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) GPIO5 - nPIOR (I/O space output enable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) GPIO6 - nPIOW (I/O space write enable)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) GPIO7 - nIOS16 (Input from I/O space telling size of data bus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) GPIO8 - nPWAIT (Input for inserting wait states)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) LCD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) GPIO6_2 - LDD0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) GPIO7_2 - LDD1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) GPIO8_2 - LDD2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) GPIO9_2 - LDD3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) GPIO11_2 - LDD5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) GPIO12_2 - LDD6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) GPIO13_2 - LDD7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) GPIO14_2 - VSYNC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) GPIO15_2 - HSYNC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) GPIO16_2 - VCLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) GPIO17_2 - HCLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) GPIO18_2 - VDEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) GPIO63 - LDD8 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) GPIO64 - LDD9 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) GPIO65 - LDD10 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) GPIO66 - LDD11 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) GPIO67 - LDD12 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) GPIO68 - LDD13 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) GPIO69 - LDD14 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) GPIO70 - LDD15 (CPU LCD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) GPIO88 - VCCLCD_PWREN (LCD Panel PWREN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) GPIO97 - BACKLIGHT_EN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) GPIO104 - LCD_PWREN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) PWM - Leave unconfigured for now...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) GPIO11 - PWM0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) GPIO12 - PWM1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) GPIO13 - PWM2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) GPIO14 - PWM3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) SD-CARD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) -------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) GPIO18 - SDDATA0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) GPIO19 - SDDATA1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) GPIO20 - SDDATA2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) GPIO21 - SDDATA3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) GPIO22 - SDCLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) GPIO23 - SDCMD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) GPIO72 - SD_WP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) GPIO84 - SD_nIRQ_CD (SD-Card)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) I2C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) ---
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) GPIO32 - I2CSCL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) GPIO33 - I2CSDA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) AC97
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) GPIO35 - AC97_SDATA_IN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) GPIO37 - AC97_SDATA_OUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) GPIO38 - AC97_SYNC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) GPIO39 - AC97_BITCLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) GPIO40 - AC97_nRESET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) UART1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) -----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) GPIO41 - UART_RXD1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) GPIO42 - UART_TXD1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) GPIO43 - UART_CTS1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) GPIO44 - UART_DCD1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) GPIO45 - UART_DSR1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) GPIO46 - UART_nRI1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) GPIO47 - UART_DTR1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) GPIO48 - UART_RTS1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) UART2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) -----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) GPIO109 - RTS2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) GPIO110 - RXD2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) GPIO111 - TXD2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) GPIO112 - nCTS2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) UART3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) -----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) GPIO105 - nCTS3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) GPIO106 - nRTS3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) GPIO107 - TXD3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) GPIO108 - RXD3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) SSP3 - Leave unconfigured for now...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) GPIO89 - SSP3_CLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) GPIO90 - SSP3_SFRM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) GPIO91 - SSP3_TXD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) GPIO92 - SSP3_RXD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) SSP4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) GPIO93 - SSP4_CLK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) GPIO94 - SSP4_SFRM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) GPIO95 - SSP4_TXD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) GPIO96 - SSP4_RXD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) static mfp_cfg_t mfp_cfg[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) /* USB */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) GPIO10_UTM_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) GPIO49_U2D_PHYDATA_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) GPIO50_U2D_PHYDATA_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) GPIO51_U2D_PHYDATA_2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) GPIO52_U2D_PHYDATA_3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) GPIO53_U2D_PHYDATA_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) GPIO54_U2D_PHYDATA_5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) GPIO55_U2D_PHYDATA_6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) GPIO56_U2D_PHYDATA_7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) GPIO58_UTM_RXVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) GPIO59_UTM_RXACTIVE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) GPIO60_U2D_RXERROR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) GPIO61_U2D_OPMODE0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) GPIO62_U2D_OPMODE1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) GPIO71_GPIO, /* USBD_INT */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) GPIO73_UTM_TXREADY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) GPIO83_U2D_TXVALID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) GPIO98_U2D_RESET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) GPIO99_U2D_XCVR_SEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) GPIO100_U2D_TERM_SEL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) GPIO101_U2D_SUSPEND,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) GPIO102_UTM_LINESTATE_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) GPIO103_UTM_LINESTATE_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) GPIO4_2_GPIO | MFP_PULL_HIGH, /* UTM_PULLUP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) /* DM9000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) GPIO1_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) GPIO9_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) GPIO36_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) /* AC97 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) GPIO35_AC97_SDATA_IN_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) GPIO37_AC97_SDATA_OUT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) GPIO38_AC97_SYNC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) GPIO39_AC97_BITCLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) GPIO40_AC97_nACRESET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) /* UARTS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) GPIO41_UART1_RXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) GPIO42_UART1_TXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) GPIO43_UART1_CTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) GPIO44_UART1_DCD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) GPIO45_UART1_DSR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) GPIO46_UART1_RI,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) GPIO47_UART1_DTR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) GPIO48_UART1_RTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) GPIO109_UART2_RTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) GPIO110_UART2_RXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) GPIO111_UART2_TXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) GPIO112_UART2_CTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) GPIO105_UART3_CTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) GPIO106_UART3_RTS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) GPIO107_UART3_TXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) GPIO108_UART3_RXD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) GPIO78_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) GPIO79_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) GPIO80_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) GPIO81_GPIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) /* I2C */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) GPIO32_I2C_SCL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) GPIO33_I2C_SDA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) /* MMC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) GPIO18_MMC1_DAT0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) GPIO19_MMC1_DAT1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) GPIO20_MMC1_DAT2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) GPIO21_MMC1_DAT3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) GPIO22_MMC1_CLK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) GPIO23_MMC1_CMD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) GPIO72_GPIO | MFP_PULL_HIGH, /* Card Detect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) GPIO84_GPIO | MFP_PULL_LOW, /* Write Protect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) /* IRQ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) GPIO74_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) GPIO75_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) GPIO76_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) GPIO77_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ4 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) GPIO78_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ5 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) GPIO79_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) GPIO80_GPIO | MFP_LPM_EDGE_RISE, /* EXT_IRQ7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) GPIO81_GPIO | MFP_LPM_EDGE_RISE /* EXT_IRQ8 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) /* MMC/MCI Support */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #if defined(CONFIG_MMC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) static struct pxamci_platform_data mxm_8x10_mci_platform_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) .detect_delay_ms = 10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) static struct gpiod_lookup_table mxm_8x10_mci_gpio_table = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) .dev_id = "pxa2xx-mci.0",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) .table = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) /* Card detect on GPIO 72 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) GPIO_LOOKUP("gpio-pxa", MXM_8X10_SD_nCD,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) "cd", GPIO_ACTIVE_LOW),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) /* Write protect on GPIO 84 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) GPIO_LOOKUP("gpio-pxa", MXM_8X10_SD_WP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) "wp", GPIO_ACTIVE_LOW),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) { },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) void __init mxm_8x10_mmc_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) gpiod_add_lookup_table(&mxm_8x10_mci_gpio_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) pxa_set_mci_info(&mxm_8x10_mci_platform_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) /* USB Open Host Controller Interface */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) static struct pxaohci_platform_data mxm_8x10_ohci_platform_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) .port_mode = PMM_NPS_MODE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) .flags = ENABLE_PORT_ALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) void __init mxm_8x10_usb_host_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) pxa_set_ohci_info(&mxm_8x10_ohci_platform_data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) /* AC97 Sound Support */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) static struct platform_device mxm_8x10_ac97_device = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) .name = "pxa2xx-ac97"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) void __init mxm_8x10_ac97_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) platform_device_register(&mxm_8x10_ac97_device);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) /* NAND flash Support */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) #if IS_ENABLED(CONFIG_MTD_NAND_MARVELL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) #define NAND_BLOCK_SIZE SZ_128K
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) #define NB(x) (NAND_BLOCK_SIZE * (x))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) static struct mtd_partition mxm_8x10_nand_partitions[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) [0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) .name = "boot",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) .size = NB(0x002),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) .offset = NB(0x000),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) .mask_flags = MTD_WRITEABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) [1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) .name = "kernel",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) .size = NB(0x010),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) .offset = NB(0x002),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) .mask_flags = MTD_WRITEABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) [2] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) .name = "root",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) .size = NB(0x36c),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) .offset = NB(0x012)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) [3] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) .name = "bbt",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) .size = NB(0x082),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) .offset = NB(0x37e),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) .mask_flags = MTD_WRITEABLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) static struct pxa3xx_nand_platform_data mxm_8x10_nand_info = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) .keep_config = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) .parts = mxm_8x10_nand_partitions,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) .nr_parts = ARRAY_SIZE(mxm_8x10_nand_partitions)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) static void __init mxm_8x10_nand_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) pxa3xx_set_nand_info(&mxm_8x10_nand_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) static inline void mxm_8x10_nand_init(void) {}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) #endif /* IS_ENABLED(CONFIG_MTD_NAND_MARVELL) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) /* Ethernet support: Davicom DM9000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) static struct resource dm9k_resources[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) [0] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) .start = MXM_8X10_ETH_PHYS + 0x300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) .end = MXM_8X10_ETH_PHYS + 0x300,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) .flags = IORESOURCE_MEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) [1] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) .start = MXM_8X10_ETH_PHYS + 0x308,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) .end = MXM_8X10_ETH_PHYS + 0x308,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) .flags = IORESOURCE_MEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) [2] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) .start = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO9)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) .end = PXA_GPIO_TO_IRQ(mfp_to_gpio(MFP_PIN_GPIO9)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) static struct dm9000_plat_data dm9k_plat_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) .flags = DM9000_PLATF_16BITONLY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) static struct platform_device dm9k_device = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) .name = "dm9000",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) .id = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) .num_resources = ARRAY_SIZE(dm9k_resources),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) .resource = dm9k_resources,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) .dev = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) .platform_data = &dm9k_plat_data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) static void __init mxm_8x10_ethernet_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) platform_device_register(&dm9k_device);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) /* PXA UARTs */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) static void __init mxm_8x10_uarts_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) pxa_set_ffuart_info(NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) pxa_set_btuart_info(NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) pxa_set_stuart_info(NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) /* I2C and Real Time Clock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) static struct i2c_board_info __initdata mxm_8x10_i2c_devices[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) I2C_BOARD_INFO("ds1337", 0x68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) static void __init mxm_8x10_i2c_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) i2c_register_board_info(0, mxm_8x10_i2c_devices,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) ARRAY_SIZE(mxm_8x10_i2c_devices));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) pxa_set_i2c_info(NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) void __init mxm_8x10_barebones_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) pxa3xx_mfp_config(ARRAY_AND_SIZE(mfp_cfg));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) mxm_8x10_uarts_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) mxm_8x10_nand_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) mxm_8x10_i2c_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) mxm_8x10_ethernet_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) }