diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/Kconfig | 2 | ||||
| -rw-r--r-- | arch/arm/boot/dts/ea3250.dts | 157 | ||||
| -rw-r--r-- | arch/arm/boot/dts/lpc32xx.dtsi | 74 | ||||
| -rw-r--r-- | arch/arm/boot/dts/phy3250.dts | 61 | ||||
| -rw-r--r-- | arch/arm/configs/imx_v4_v5_defconfig | 51 | ||||
| -rw-r--r-- | arch/arm/configs/imx_v6_v7_defconfig | 61 | ||||
| -rw-r--r-- | arch/arm/configs/lpc32xx_defconfig | 26 | ||||
| -rw-r--r-- | arch/arm/configs/mxs_defconfig | 7 | ||||
| -rw-r--r-- | arch/arm/configs/tegra_defconfig | 13 | ||||
| -rw-r--r-- | arch/arm/mach-lpc32xx/Kconfig | 32 | ||||
| -rw-r--r-- | arch/arm/mach-lpc32xx/Makefile.boot | 1 | ||||
| -rw-r--r-- | arch/arm/mach-lpc32xx/clock.c | 21 | ||||
| -rw-r--r-- | arch/arm/mach-lpc32xx/include/mach/gpio.h | 2 | ||||
| -rw-r--r-- | arch/arm/mach-lpc32xx/phy3250.c | 156 | ||||
| -rw-r--r-- | arch/arm/mach-lpc32xx/serial.c | 90 | 
15 files changed, 453 insertions, 301 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index a91009c6187..9c2474668af 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1021,8 +1021,6 @@ source "arch/arm/mach-kirkwood/Kconfig"  source "arch/arm/mach-ks8695/Kconfig" -source "arch/arm/mach-lpc32xx/Kconfig" -  source "arch/arm/mach-msm/Kconfig"  source "arch/arm/mach-mv78xx0/Kconfig" diff --git a/arch/arm/boot/dts/ea3250.dts b/arch/arm/boot/dts/ea3250.dts new file mode 100644 index 00000000000..c07ba8c2cc0 --- /dev/null +++ b/arch/arm/boot/dts/ea3250.dts @@ -0,0 +1,157 @@ +/* + * Embedded Artists LPC3250 board + * + * Copyright 2012 Roland Stigge <stigge@antcom.de> + * + * The code contained herein is licensed under the GNU General Public + * License. You may obtain a copy of the GNU General Public License + * Version 2 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ + +/dts-v1/; +/include/ "lpc32xx.dtsi" + +/ { +	model = "Embedded Artists LPC3250 board based on NXP LPC3250"; +	compatible = "ea,ea3250", "nxp,lpc3250"; +	#address-cells = <1>; +	#size-cells = <1>; + +	memory { +		device_type = "memory"; +		reg = <0 0x4000000>; +	}; + +	ahb { +		mac: ethernet@31060000 { +			phy-mode = "rmii"; +			use-iram; +		}; + +		/* Here, choose exactly one from: ohci, usbd */ +		ohci@31020000 { +			transceiver = <&isp1301>; +			status = "okay"; +		}; + +/* +		usbd@31020000 { +			transceiver = <&isp1301>; +			status = "okay"; +		}; +*/ + +		/* 128MB Flash via SLC NAND controller */ +		slc: flash@20020000 { +			status = "okay"; +			#address-cells = <1>; +			#size-cells = <1>; + +			nxp,wdr-clks = <14>; +			nxp,wwidth = <260000000>; +			nxp,whold = <104000000>; +			nxp,wsetup = <200000000>; +			nxp,rdr-clks = <14>; +			nxp,rwidth = <34666666>; +			nxp,rhold = <104000000>; +			nxp,rsetup = <200000000>; +			nand-on-flash-bbt; +			gpios = <&gpio 5 19 1>; /* GPO_P3 19, active low */ + +			mtd0@00000000 { +				label = "ea3250-boot"; +				reg = <0x00000000 0x00080000>; +				read-only; +			}; + +			mtd1@00080000 { +				label = "ea3250-uboot"; +				reg = <0x00080000 0x000c0000>; +				read-only; +			}; + +			mtd2@00140000 { +				label = "ea3250-kernel"; +				reg = <0x00140000 0x00400000>; +			}; + +			mtd3@00540000 { +				label = "ea3250-rootfs"; +				reg = <0x00540000 0x07ac0000>; +			}; +		}; + +		apb { +			uart5: serial@40090000 { +				status = "okay"; +			}; + +			uart3: serial@40080000 { +				status = "okay"; +			}; + +			uart6: serial@40098000 { +				status = "okay"; +			}; + +			i2c1: i2c@400A0000 { +				clock-frequency = <100000>; + +				eeprom@50 { +					compatible = "at,24c256"; +					reg = <0x50>; +				}; + +				eeprom@57 { +					compatible = "at,24c64"; +					reg = <0x57>; +				}; + +				uda1380: uda1380@18 { +					compatible = "nxp,uda1380"; +					reg = <0x18>; +					power-gpio = <&gpio 0x59 0>; +					reset-gpio = <&gpio 0x51 0>; +					dac-clk = "wspll"; +				}; + +				pca9532: pca9532@60 { +					compatible = "nxp,pca9532"; +					gpio-controller; +					#gpio-cells = <2>; +					reg = <0x60>; +				}; +			}; + +			i2c2: i2c@400A8000 { +				clock-frequency = <100000>; +			}; + +			i2cusb: i2c@31020300 { +				clock-frequency = <100000>; + +				isp1301: usb-transceiver@2d { +					compatible = "nxp,isp1301"; +					reg = <0x2d>; +				}; +			}; + +			sd@20098000 { +				wp-gpios = <&pca9532 5 0>; +				cd-gpios = <&pca9532 4 0>; +				cd-inverted; +				bus-width = <4>; +				status = "okay"; +			}; +		}; + +		fab { +			uart1: serial@40014000 { +				status = "okay"; +			}; +		}; +	}; +}; diff --git a/arch/arm/boot/dts/lpc32xx.dtsi b/arch/arm/boot/dts/lpc32xx.dtsi index 3f5dad801a9..c5f37fbd33e 100644 --- a/arch/arm/boot/dts/lpc32xx.dtsi +++ b/arch/arm/boot/dts/lpc32xx.dtsi @@ -35,13 +35,14 @@  		slc: flash@20020000 {  			compatible = "nxp,lpc3220-slc";  			reg = <0x20020000 0x1000>; -			status = "disable"; +			status = "disabled";  		}; -		mlc: flash@200B0000 { +		mlc: flash@200a8000 {  			compatible = "nxp,lpc3220-mlc"; -			reg = <0x200B0000 0x1000>; -			status = "disable"; +			reg = <0x200a8000 0x11000>; +			interrupts = <11 0>; +			status = "disabled";  		};  		dma@31000000 { @@ -57,21 +58,21 @@  			compatible = "nxp,ohci-nxp", "usb-ohci";  			reg = <0x31020000 0x300>;  			interrupts = <0x3b 0>; -			status = "disable"; +			status = "disabled";  		};  		usbd@31020000 {  			compatible = "nxp,lpc3220-udc";  			reg = <0x31020000 0x300>;  			interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>; -			status = "disable"; +			status = "disabled";  		};  		clcd@31040000 {  			compatible = "arm,pl110", "arm,primecell";  			reg = <0x31040000 0x1000>;  			interrupts = <0x0e 0>; -			status = "disable"; +			status = "disabled";  		};  		mac: ethernet@31060000 { @@ -114,9 +115,10 @@  			};  			sd@20098000 { -				compatible = "arm,pl180", "arm,primecell"; +				compatible = "arm,pl18x", "arm,primecell";  				reg = <0x20098000 0x1000>;  				interrupts = <0x0f 0>, <0x0d 0>; +				status = "disabled";  			};  			i2s1: i2s@2009C000 { @@ -124,24 +126,42 @@  				reg = <0x2009C000 0x1000>;  			}; +			/* UART5 first since it is the default console, ttyS0 */ +			uart5: serial@40090000 { +				/* actually, ns16550a w/ 64 byte fifos! */ +				compatible = "nxp,lpc3220-uart"; +				reg = <0x40090000 0x1000>; +				interrupts = <9 0>; +				clock-frequency = <13000000>; +				reg-shift = <2>; +				status = "disabled"; +			}; +  			uart3: serial@40080000 { -				compatible = "nxp,serial"; +				compatible = "nxp,lpc3220-uart";  				reg = <0x40080000 0x1000>; +				interrupts = <7 0>; +				clock-frequency = <13000000>; +				reg-shift = <2>; +				status = "disabled";  			};  			uart4: serial@40088000 { -				compatible = "nxp,serial"; +				compatible = "nxp,lpc3220-uart";  				reg = <0x40088000 0x1000>; -			}; - -			uart5: serial@40090000 { -				compatible = "nxp,serial"; -				reg = <0x40090000 0x1000>; +				interrupts = <8 0>; +				clock-frequency = <13000000>; +				reg-shift = <2>; +				status = "disabled";  			};  			uart6: serial@40098000 { -				compatible = "nxp,serial"; +				compatible = "nxp,lpc3220-uart";  				reg = <0x40098000 0x1000>; +				interrupts = <10 0>; +				clock-frequency = <13000000>; +				reg-shift = <2>; +				status = "disabled";  			};  			i2c1: i2c@400A0000 { @@ -192,18 +212,24 @@  			};  			uart1: serial@40014000 { -				compatible = "nxp,serial"; +				compatible = "nxp,lpc3220-hsuart";  				reg = <0x40014000 0x1000>; +				interrupts = <26 0>; +				status = "disabled";  			};  			uart2: serial@40018000 { -				compatible = "nxp,serial"; +				compatible = "nxp,lpc3220-hsuart";  				reg = <0x40018000 0x1000>; +				interrupts = <25 0>; +				status = "disabled";  			}; -			uart7: serial@4001C000 { -				compatible = "nxp,serial"; -				reg = <0x4001C000 0x1000>; +			uart7: serial@4001c000 { +				compatible = "nxp,lpc3220-hsuart"; +				reg = <0x4001c000 0x1000>; +				interrupts = <24 0>; +				status = "disabled";  			};  			rtc@40024000 { @@ -235,19 +261,21 @@  				compatible = "nxp,lpc3220-adc";  				reg = <0x40048000 0x1000>;  				interrupts = <0x27 0>; -				status = "disable"; +				status = "disabled";  			};  			tsc@40048000 {  				compatible = "nxp,lpc3220-tsc";  				reg = <0x40048000 0x1000>;  				interrupts = <0x27 0>; -				status = "disable"; +				status = "disabled";  			};  			key@40050000 {  				compatible = "nxp,lpc3220-key";  				reg = <0x40050000 0x1000>; +				interrupts = <54 0>; +				status = "disabled";  			};  		}; diff --git a/arch/arm/boot/dts/phy3250.dts b/arch/arm/boot/dts/phy3250.dts index c4ff6d1a018..802ec5b2fd0 100644 --- a/arch/arm/boot/dts/phy3250.dts +++ b/arch/arm/boot/dts/phy3250.dts @@ -54,6 +54,17 @@  			#address-cells = <1>;  			#size-cells = <1>; +			nxp,wdr-clks = <14>; +			nxp,wwidth = <40000000>; +			nxp,whold = <100000000>; +			nxp,wsetup = <100000000>; +			nxp,rdr-clks = <14>; +			nxp,rwidth = <40000000>; +			nxp,rhold = <66666666>; +			nxp,rsetup = <100000000>; +			nand-on-flash-bbt; +			gpios = <&gpio 5 19 1>; /* GPO_P3 19, active low */ +  			mtd0@00000000 {  				label = "phy3250-boot";  				reg = <0x00000000 0x00064000>; @@ -83,6 +94,14 @@  		};  		apb { +			uart5: serial@40090000 { +				status = "okay"; +			}; + +			uart3: serial@40080000 { +				status = "okay"; +			}; +  			i2c1: i2c@400A0000 {  				clock-frequency = <100000>; @@ -114,16 +133,58 @@  			};  			ssp0: ssp@20084000 { +				#address-cells = <1>; +				#size-cells = <0>; +				pl022,num-chipselects = <1>; +				cs-gpios = <&gpio 3 5 0>; +  				eeprom: at25@0 { +					pl022,hierarchy = <0>; +					pl022,interface = <0>; +					pl022,slave-tx-disable = <0>; +					pl022,com-mode = <0>; +					pl022,rx-level-trig = <1>; +					pl022,tx-level-trig = <1>; +					pl022,ctrl-len = <11>; +					pl022,wait-state = <0>; +					pl022,duplex = <0>; + +					at25,byte-len = <0x8000>; +					at25,addr-mode = <2>; +					at25,page-size = <64>; +  					compatible = "atmel,at25"; +					reg = <0>; +					spi-max-frequency = <5000000>;  				};  			}; + +			sd@20098000 { +				wp-gpios = <&gpio 3 0 0>; +				cd-gpios = <&gpio 3 1 0>; +				cd-inverted; +				bus-width = <4>; +				status = "okay"; +			};  		};  		fab { +			uart2: serial@40018000 { +				status = "okay"; +			}; +  			tsc@40048000 {  				status = "okay";  			}; + +			key@40050000 { +				status = "okay"; +				keypad,num-rows = <1>; +				keypad,num-columns = <1>; +				nxp,debounce-delay-ms = <3>; +				nxp,scan-delay-ms = <34>; +				linux,keymap = <0x00000002>; +			};  		};  	}; diff --git a/arch/arm/configs/imx_v4_v5_defconfig b/arch/arm/configs/imx_v4_v5_defconfig index e05a2f1665a..78ed575feb1 100644 --- a/arch/arm/configs/imx_v4_v5_defconfig +++ b/arch/arm/configs/imx_v4_v5_defconfig @@ -2,7 +2,10 @@ CONFIG_EXPERIMENTAL=y  # CONFIG_SWAP is not set  CONFIG_SYSVIPC=y  CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y  CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y  CONFIG_EXPERT=y  # CONFIG_COMPAT_BRK is not set  CONFIG_SLAB=y @@ -36,8 +39,6 @@ CONFIG_MACH_IMX27IPCAM=y  CONFIG_MACH_IMX27_DT=y  CONFIG_MXC_IRQ_PRIOR=y  CONFIG_MXC_PWM=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y  CONFIG_PREEMPT=y  CONFIG_AEABI=y  CONFIG_ZBOOT_ROM_TEXT=0x0 @@ -46,7 +47,6 @@ CONFIG_FPE_NWFPE=y  CONFIG_FPE_NWFPE_XP=y  CONFIG_PM_DEBUG=y  CONFIG_NET=y -CONFIG_SMSC911X=y  CONFIG_PACKET=y  CONFIG_UNIX=y  CONFIG_INET=y @@ -70,31 +70,31 @@ CONFIG_MTD_CFI=y  CONFIG_MTD_CFI_ADV_OPTIONS=y  CONFIG_MTD_CFI_GEOMETRY=y  # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set -CONFIG_MTD_MAP_BANK_WIDTH_4=y  # CONFIG_MTD_CFI_I2 is not set  CONFIG_MTD_CFI_INTELEXT=y  CONFIG_MTD_PHYSMAP=y  CONFIG_MTD_NAND=y  CONFIG_MTD_NAND_MXC=y  CONFIG_MTD_UBI=y -CONFIG_MISC_DEVICES=y  CONFIG_EEPROM_AT24=y  CONFIG_EEPROM_AT25=y +CONFIG_ATA=y +CONFIG_PATA_IMX=y  CONFIG_NETDEVICES=y  CONFIG_CS89x0=y  CONFIG_CS89x0_PLATFORM=y  CONFIG_DM9000=y  CONFIG_SMC91X=y  CONFIG_SMC911X=y +CONFIG_SMSC911X=y  CONFIG_SMSC_PHY=y  # CONFIG_INPUT_MOUSEDEV is not set  CONFIG_INPUT_EVDEV=y -# CONFIG_INPUT_KEYBOARD is not set +CONFIG_KEYBOARD_IMX=y  # CONFIG_INPUT_MOUSE is not set  CONFIG_INPUT_TOUCHSCREEN=y  CONFIG_TOUCHSCREEN_ADS7846=m -CONFIG_TOUCHSCREEN_MC13783=m -# CONFIG_SERIO is not set +CONFIG_TOUCHSCREEN_MC13783=y  # CONFIG_LEGACY_PTYS is not set  CONFIG_SERIAL_8250=m  CONFIG_SERIAL_IMX=y @@ -113,31 +113,23 @@ CONFIG_HWMON=m  CONFIG_SENSORS_MC13783_ADC=m  CONFIG_WATCHDOG=y  CONFIG_IMX2_WDT=y -CONFIG_MFD_MC13XXX=y +CONFIG_MFD_MC13XXX_SPI=y  CONFIG_REGULATOR=y  CONFIG_REGULATOR_FIXED_VOLTAGE=y  CONFIG_REGULATOR_MC13783=y  CONFIG_REGULATOR_MC13892=y -CONFIG_FB=y -CONFIG_FB_IMX=y -CONFIG_BACKLIGHT_LCD_SUPPORT=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_LCD_L4F00242T03=y  CONFIG_MEDIA_SUPPORT=y  CONFIG_VIDEO_DEV=y -CONFIG_VIDEO_V4L2_COMMON=y -CONFIG_VIDEO_MEDIA=y -CONFIG_VIDEO_V4L2=y -CONFIG_VIDEOBUF_GEN=y -CONFIG_VIDEOBUF_DMA_CONTIG=y -CONFIG_VIDEOBUF2_CORE=y -CONFIG_VIDEO_CAPTURE_DRIVERS=y  CONFIG_V4L_PLATFORM_DRIVERS=y  CONFIG_SOC_CAMERA=y  CONFIG_SOC_CAMERA_OV2640=y -CONFIG_VIDEO_MX2_HOSTSUPPORT=y  CONFIG_VIDEO_MX2=y +CONFIG_FB=y +CONFIG_FB_IMX=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=y +CONFIG_LCD_L4F00242T03=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y  CONFIG_BACKLIGHT_PWM=y  CONFIG_FRAMEBUFFER_CONSOLE=y  CONFIG_FONTS=y @@ -152,13 +144,17 @@ CONFIG_SND_IMX_SOC=y  CONFIG_SND_SOC_MX27VIS_AIC32X4=y  CONFIG_SND_SOC_PHYCORE_AC97=y  CONFIG_SND_SOC_EUKREA_TLV320=y +CONFIG_SND_SOC_IMX_SGTL5000=y +CONFIG_SND_SOC_IMX_MC13783=y  CONFIG_USB_HID=m  CONFIG_USB=y -# CONFIG_USB_DEVICE_CLASS is not set  CONFIG_USB_EHCI_HCD=y  CONFIG_USB_EHCI_MXC=y  CONFIG_USB_ULPI=y  CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y  CONFIG_MMC_MXC=y  CONFIG_NEW_LEDS=y  CONFIG_LEDS_CLASS=y @@ -173,22 +169,25 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y  CONFIG_RTC_CLASS=y  CONFIG_RTC_DRV_PCF8563=y  CONFIG_RTC_DRV_IMXDI=y +CONFIG_RTC_DRV_MC13XXX=y  CONFIG_RTC_DRV_MXC=y  CONFIG_DMADEVICES=y  CONFIG_IMX_SDMA=y  CONFIG_IMX_DMA=y +CONFIG_COMMON_CLK_DEBUG=y  # CONFIG_IOMMU_SUPPORT is not set +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_EXT4_FS=y  # CONFIG_DNOTIFY is not set  # CONFIG_PROC_PAGE_MONITOR is not set  CONFIG_TMPFS=y  CONFIG_JFFS2_FS=y  CONFIG_UBIFS_FS=y  CONFIG_NFS_FS=y -CONFIG_NFS_V3=y  CONFIG_ROOT_NFS=y  CONFIG_NLS_CODEPAGE_437=m  CONFIG_NLS_CODEPAGE_850=m  CONFIG_NLS_ISO8859_1=y  CONFIG_NLS_ISO8859_15=m -CONFIG_SYSCTL_SYSCALL_CHECK=y  # CONFIG_CRYPTO_ANSI_CPRNG is not set diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig index b1d3675df72..f725b9637b3 100644 --- a/arch/arm/configs/imx_v6_v7_defconfig +++ b/arch/arm/configs/imx_v6_v7_defconfig @@ -2,6 +2,8 @@ CONFIG_EXPERIMENTAL=y  # CONFIG_LOCALVERSION_AUTO is not set  CONFIG_KERNEL_LZO=y  CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y  CONFIG_LOG_BUF_SHIFT=18  CONFIG_CGROUPS=y  CONFIG_RELAY=y @@ -29,15 +31,12 @@ CONFIG_MACH_MX35_3DS=y  CONFIG_MACH_VPR200=y  CONFIG_MACH_IMX51_DT=y  CONFIG_MACH_MX51_3DS=y -CONFIG_MACH_EUKREA_CPUIMX51=y  CONFIG_MACH_EUKREA_CPUIMX51SD=y  CONFIG_MACH_MX51_EFIKAMX=y  CONFIG_MACH_MX51_EFIKASB=y  CONFIG_MACH_IMX53_DT=y  CONFIG_SOC_IMX6Q=y  CONFIG_MXC_PWM=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y  CONFIG_SMP=y  CONFIG_VMSPLIT_2G=y  CONFIG_PREEMPT_VOLUNTARY=y @@ -64,17 +63,29 @@ CONFIG_IPV6=y  # CONFIG_WIRELESS is not set  CONFIG_DEVTMPFS=y  CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_STANDALONE is not set +CONFIG_CONNECTOR=y  CONFIG_MTD=y -CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_CMDLINE_PARTS=y  CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_JEDECPROBE=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CFI_STAA=y  CONFIG_MTD_DATAFLASH=y  CONFIG_MTD_M25P80=y  CONFIG_MTD_SST25L=y -# CONFIG_STANDALONE is not set -CONFIG_CONNECTOR=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_GPMI_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y  CONFIG_BLK_DEV_LOOP=y  CONFIG_BLK_DEV_RAM=y  CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y  # CONFIG_SCSI_PROC_FS is not set  CONFIG_BLK_DEV_SD=y  CONFIG_SCSI_MULTI_LUN=y @@ -105,8 +116,11 @@ CONFIG_SMSC911X=y  CONFIG_INPUT_EVDEV=y  CONFIG_INPUT_EVBUG=m  CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_IMX=y  CONFIG_MOUSE_PS2=m  CONFIG_MOUSE_PS2_ELANTECH=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_MC13783=y  CONFIG_INPUT_MISC=y  CONFIG_INPUT_MMA8450=y  CONFIG_SERIO_SERPORT=m @@ -116,6 +130,7 @@ CONFIG_VT_HW_CONSOLE_BINDING=y  CONFIG_SERIAL_IMX=y  CONFIG_SERIAL_IMX_CONSOLE=y  CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_MXC_RNGA=y  CONFIG_I2C=y  # CONFIG_I2C_COMPAT is not set  CONFIG_I2C_CHARDEV=y @@ -130,42 +145,37 @@ CONFIG_GPIO_SYSFS=y  # CONFIG_HWMON is not set  CONFIG_WATCHDOG=y  CONFIG_IMX2_WDT=y -CONFIG_MFD_MC13XXX=y +CONFIG_MFD_MC13XXX_SPI=y +CONFIG_MFD_MC13XXX_I2C=y  CONFIG_REGULATOR=y  CONFIG_REGULATOR_FIXED_VOLTAGE=y  CONFIG_REGULATOR_MC13783=y  CONFIG_REGULATOR_MC13892=y  CONFIG_MEDIA_SUPPORT=y -CONFIG_VIDEO_V4L2=y  CONFIG_VIDEO_DEV=y -CONFIG_VIDEO_V4L2_COMMON=y -CONFIG_VIDEOBUF_GEN=y -CONFIG_VIDEOBUF2_CORE=y -CONFIG_VIDEOBUF2_MEMOPS=y -CONFIG_VIDEOBUF2_DMA_CONTIG=y -CONFIG_VIDEO_CAPTURE_DRIVERS=y  CONFIG_V4L_PLATFORM_DRIVERS=y  CONFIG_SOC_CAMERA=y  CONFIG_SOC_CAMERA_OV2640=y -CONFIG_MX3_VIDEO=y  CONFIG_VIDEO_MX3=y  CONFIG_FB=y -CONFIG_FB_MX3=y  CONFIG_BACKLIGHT_LCD_SUPPORT=y  CONFIG_LCD_CLASS_DEVICE=y  CONFIG_LCD_L4F00242T03=y  CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_GENERIC=y -CONFIG_DUMMY_CONSOLE=y  CONFIG_FRAMEBUFFER_CONSOLE=y  CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y  CONFIG_FONTS=y  CONFIG_FONT_8x8=y  CONFIG_FONT_8x16=y  CONFIG_LOGO=y -CONFIG_LOGO_LINUX_MONO=y -CONFIG_LOGO_LINUX_VGA16=y -CONFIG_LOGO_LINUX_CLUT224=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y +CONFIG_SND_IMX_SOC=y +CONFIG_SND_SOC_PHYCORE_AC97=y +CONFIG_SND_SOC_EUKREA_TLV320=y +CONFIG_SND_SOC_IMX_SGTL5000=y +CONFIG_SND_SOC_IMX_MC13783=y  CONFIG_USB=y  CONFIG_USB_EHCI_HCD=y  CONFIG_USB_EHCI_MXC=y @@ -178,9 +188,12 @@ CONFIG_NEW_LEDS=y  CONFIG_LEDS_CLASS=y  CONFIG_RTC_CLASS=y  CONFIG_RTC_INTF_DEV_UIE_EMUL=y +CONFIG_RTC_DRV_MC13XXX=y  CONFIG_RTC_DRV_MXC=y  CONFIG_DMADEVICES=y  CONFIG_IMX_SDMA=y +CONFIG_COMMON_CLK_DEBUG=y +# CONFIG_IOMMU_SUPPORT is not set  CONFIG_EXT2_FS=y  CONFIG_EXT2_FS_XATTR=y  CONFIG_EXT2_FS_POSIX_ACL=y @@ -204,8 +217,9 @@ CONFIG_MSDOS_FS=m  CONFIG_VFAT_FS=y  CONFIG_TMPFS=y  CONFIG_CONFIGFS_FS=m +CONFIG_JFFS2_FS=y +CONFIG_UBIFS_FS=y  CONFIG_NFS_FS=y -CONFIG_NFS_V3=y  CONFIG_NFS_V3_ACL=y  CONFIG_NFS_V4=y  CONFIG_ROOT_NFS=y @@ -216,14 +230,11 @@ CONFIG_NLS_ISO8859_1=y  CONFIG_NLS_ISO8859_15=m  CONFIG_NLS_UTF8=y  CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_FS=y  # CONFIG_SCHED_DEBUG is not set  # CONFIG_DEBUG_BUGVERBOSE is not set  # CONFIG_FTRACE is not set  # CONFIG_ARM_UNWIND is not set  CONFIG_SECURITYFS=y -CONFIG_CRYPTO_DEFLATE=m -CONFIG_CRYPTO_LZO=m  # CONFIG_CRYPTO_ANSI_CPRNG is not set  # CONFIG_CRYPTO_HW is not set  CONFIG_CRC_CCITT=m diff --git a/arch/arm/configs/lpc32xx_defconfig b/arch/arm/configs/lpc32xx_defconfig index 4fa60547494..e42a0e3d4c3 100644 --- a/arch/arm/configs/lpc32xx_defconfig +++ b/arch/arm/configs/lpc32xx_defconfig @@ -1,5 +1,7 @@  CONFIG_EXPERIMENTAL=y  CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y  CONFIG_IKCONFIG=y  CONFIG_IKCONFIG_PROC=y  CONFIG_LOG_BUF_SHIFT=16 @@ -16,8 +18,7 @@ CONFIG_MODULE_UNLOAD=y  # CONFIG_BLK_DEV_BSG is not set  CONFIG_PARTITION_ADVANCED=y  CONFIG_ARCH_LPC32XX=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y +CONFIG_KEYBOARD_GPIO_POLLED=y  CONFIG_PREEMPT=y  CONFIG_AEABI=y  CONFIG_ZBOOT_ROM_TEXT=0x0 @@ -52,13 +53,17 @@ CONFIG_MTD=y  CONFIG_MTD_CMDLINE_PARTS=y  CONFIG_MTD_CHAR=y  CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y  CONFIG_MTD_NAND=y  CONFIG_MTD_NAND_MUSEUM_IDS=y +CONFIG_MTD_NAND_SLC_LPC32XX=y +CONFIG_MTD_NAND_MLC_LPC32XX=y  CONFIG_BLK_DEV_LOOP=y  CONFIG_BLK_DEV_CRYPTOLOOP=y  CONFIG_BLK_DEV_RAM=y  CONFIG_BLK_DEV_RAM_COUNT=1  CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_EEPROM_AT24=y  CONFIG_EEPROM_AT25=y  CONFIG_SCSI=y  CONFIG_BLK_DEV_SD=y @@ -79,16 +84,23 @@ CONFIG_LPC_ENET=y  # CONFIG_NET_VENDOR_STMICRO is not set  CONFIG_SMSC_PHY=y  # CONFIG_WLAN is not set +CONFIG_INPUT_MATRIXKMAP=y  # CONFIG_INPUT_MOUSEDEV_PSAUX is not set  CONFIG_INPUT_MOUSEDEV_SCREEN_X=240  CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320  CONFIG_INPUT_EVDEV=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_LPC32XX=y  # CONFIG_INPUT_MOUSE is not set  CONFIG_INPUT_TOUCHSCREEN=y  CONFIG_TOUCHSCREEN_LPC32XX=y +CONFIG_SERIO_LIBPS2=y  # CONFIG_LEGACY_PTYS is not set  CONFIG_SERIAL_8250=y  CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_HS_LPC32XX=y +CONFIG_SERIAL_OF_PLATFORM=y  # CONFIG_HW_RANDOM is not set  CONFIG_I2C=y  CONFIG_I2C_CHARDEV=y @@ -96,7 +108,8 @@ CONFIG_I2C_PNX=y  CONFIG_SPI=y  CONFIG_SPI_PL022=y  CONFIG_GPIO_SYSFS=y -# CONFIG_HWMON is not set +CONFIG_SENSORS_DS620=y +CONFIG_SENSORS_MAX6639=y  CONFIG_WATCHDOG=y  CONFIG_PNX4008_WATCHDOG=y  CONFIG_FB=y @@ -133,6 +146,8 @@ CONFIG_MMC=y  CONFIG_MMC_ARMMMCI=y  CONFIG_NEW_LEDS=y  CONFIG_LEDS_CLASS=y +CONFIG_LEDS_PCA9532=y +CONFIG_LEDS_PCA9532_GPIO=y  CONFIG_LEDS_GPIO=y  CONFIG_LEDS_TRIGGERS=y  CONFIG_LEDS_TRIGGER_TIMER=y @@ -146,10 +161,10 @@ CONFIG_RTC_DRV_DS1374=y  CONFIG_RTC_DRV_PCF8563=y  CONFIG_RTC_DRV_LPC32XX=y  CONFIG_DMADEVICES=y -CONFIG_AMBA_PL08X=y  CONFIG_STAGING=y -CONFIG_IIO=y  CONFIG_LPC32XX_ADC=y +CONFIG_MAX517=y +CONFIG_IIO=y  CONFIG_EXT2_FS=y  CONFIG_AUTOFS4_FS=y  CONFIG_MSDOS_FS=y @@ -159,7 +174,6 @@ CONFIG_JFFS2_FS=y  CONFIG_JFFS2_FS_WBUF_VERIFY=y  CONFIG_CRAMFS=y  CONFIG_NFS_FS=y -CONFIG_NFS_V3=y  CONFIG_ROOT_NFS=y  CONFIG_NLS_CODEPAGE_437=y  CONFIG_NLS_ASCII=y diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig index 5406c23a02e..ccdb6357fb7 100644 --- a/arch/arm/configs/mxs_defconfig +++ b/arch/arm/configs/mxs_defconfig @@ -28,6 +28,7 @@ CONFIG_MACH_MX28EVK=y  CONFIG_MACH_STMP378X_DEVB=y  CONFIG_MACH_TX28=y  CONFIG_MACH_M28EVK=y +CONFIG_MACH_APX4DEVKIT=y  # CONFIG_ARM_THUMB is not set  CONFIG_NO_HZ=y  CONFIG_HIGH_RES_TIMERS=y @@ -58,6 +59,9 @@ CONFIG_CAN_FLEXCAN=m  CONFIG_DEVTMPFS=y  # CONFIG_FIRMWARE_IN_KERNEL is not set  # CONFIG_BLK_DEV is not set +CONFIG_MTD=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_GPMI_NAND=y  CONFIG_NETDEVICES=y  CONFIG_NET_ETHERNET=y  CONFIG_ENC28J60=y @@ -77,6 +81,7 @@ CONFIG_DEVPTS_MULTIPLE_INSTANCES=y  # CONFIG_DEVKMEM is not set  CONFIG_SERIAL_AMBA_PL011=y  CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_MXS_AUART=y  # CONFIG_HW_RANDOM is not set  CONFIG_I2C=y  # CONFIG_I2C_COMPAT is not set @@ -109,8 +114,10 @@ CONFIG_MMC=y  CONFIG_MMC_MXS=y  CONFIG_RTC_CLASS=y  CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_STMP=y  CONFIG_DMADEVICES=y  CONFIG_MXS_DMA=y +CONFIG_COMMON_CLK_DEBUG=y  CONFIG_EXT3_FS=y  # CONFIG_DNOTIFY is not set  CONFIG_FSCACHE=m diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig index 1198dd61c7c..4be9c1e80ee 100644 --- a/arch/arm/configs/tegra_defconfig +++ b/arch/arm/configs/tegra_defconfig @@ -1,4 +1,6 @@  CONFIG_EXPERIMENTAL=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y  CONFIG_IKCONFIG=y  CONFIG_IKCONFIG_PROC=y  CONFIG_CGROUPS=y @@ -25,14 +27,9 @@ CONFIG_ARCH_TEGRA=y  CONFIG_ARCH_TEGRA_2x_SOC=y  CONFIG_ARCH_TEGRA_3x_SOC=y  CONFIG_MACH_HARMONY=y -CONFIG_MACH_KAEN=y  CONFIG_MACH_PAZ00=y  CONFIG_MACH_TRIMSLICE=y -CONFIG_MACH_WARIO=y -CONFIG_MACH_VENTANA=y  CONFIG_TEGRA_EMC_SCALING_ENABLE=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y  CONFIG_SMP=y  CONFIG_PREEMPT=y  CONFIG_AEABI=y @@ -103,19 +100,24 @@ CONFIG_SERIAL_OF_PLATFORM=y  # CONFIG_HW_RANDOM is not set  CONFIG_I2C=y  # CONFIG_I2C_COMPAT is not set +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PINCTRL=y  CONFIG_I2C_TEGRA=y  CONFIG_SPI=y  CONFIG_SPI_TEGRA=y +CONFIG_GPIO_TPS65910=y  CONFIG_POWER_SUPPLY=y  CONFIG_BATTERY_SBS=y  CONFIG_SENSORS_LM90=y  CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y  CONFIG_REGULATOR=y  CONFIG_REGULATOR_FIXED_VOLTAGE=y  CONFIG_REGULATOR_VIRTUAL_CONSUMER=y  CONFIG_REGULATOR_GPIO=y  CONFIG_REGULATOR_TPS62360=y  CONFIG_REGULATOR_TPS6586X=y +CONFIG_REGULATOR_TPS65910=y  CONFIG_SOUND=y  CONFIG_SND=y  # CONFIG_SND_SUPPORT_OLD_API is not set @@ -126,6 +128,7 @@ CONFIG_SND=y  # CONFIG_SND_USB is not set  CONFIG_SND_SOC=y  CONFIG_SND_SOC_TEGRA=y +CONFIG_SND_SOC_TEGRA_WM8753=y  CONFIG_SND_SOC_TEGRA_WM8903=y  CONFIG_SND_SOC_TEGRA_TRIMSLICE=y  CONFIG_SND_SOC_TEGRA_ALC5632=y diff --git a/arch/arm/mach-lpc32xx/Kconfig b/arch/arm/mach-lpc32xx/Kconfig deleted file mode 100644 index e0b3eee8383..00000000000 --- a/arch/arm/mach-lpc32xx/Kconfig +++ /dev/null @@ -1,32 +0,0 @@ -if ARCH_LPC32XX - -menu "Individual UART enable selections" - -config ARCH_LPC32XX_UART3_SELECT -	bool "Add support for standard UART3" -	help -	 Adds support for standard UART 3 when the 8250 serial support -	 is enabled. - -config ARCH_LPC32XX_UART4_SELECT -	bool "Add support for standard UART4" -	help -	 Adds support for standard UART 4 when the 8250 serial support -	 is enabled. - -config ARCH_LPC32XX_UART5_SELECT -	bool "Add support for standard UART5" -	default y -	help -	 Adds support for standard UART 5 when the 8250 serial support -	 is enabled. - -config ARCH_LPC32XX_UART6_SELECT -	bool "Add support for standard UART6" -	help -	 Adds support for standard UART 6 when the 8250 serial support -	 is enabled. - -endmenu - -endif diff --git a/arch/arm/mach-lpc32xx/Makefile.boot b/arch/arm/mach-lpc32xx/Makefile.boot index 2cfe0ee635c..697323b5f92 100644 --- a/arch/arm/mach-lpc32xx/Makefile.boot +++ b/arch/arm/mach-lpc32xx/Makefile.boot @@ -2,3 +2,4 @@  params_phys-y	:= 0x80000100  initrd_phys-y	:= 0x82000000 +dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb diff --git a/arch/arm/mach-lpc32xx/clock.c b/arch/arm/mach-lpc32xx/clock.c index f6a3ffec1f4..e8d315e6db0 100644 --- a/arch/arm/mach-lpc32xx/clock.c +++ b/arch/arm/mach-lpc32xx/clock.c @@ -691,10 +691,21 @@ static struct clk clk_nand = {  	.parent		= &clk_hclk,  	.enable		= local_onoff_enable,  	.enable_reg	= LPC32XX_CLKPWR_NAND_CLK_CTRL, -	.enable_mask	= LPC32XX_CLKPWR_NANDCLK_SLCCLK_EN, +	.enable_mask	= LPC32XX_CLKPWR_NANDCLK_SLCCLK_EN | +			  LPC32XX_CLKPWR_NANDCLK_SEL_SLC,  	.get_rate	= local_return_parent_rate,  }; +static struct clk clk_nand_mlc = { +	.parent         = &clk_hclk, +	.enable         = local_onoff_enable, +	.enable_reg     = LPC32XX_CLKPWR_NAND_CLK_CTRL, +	.enable_mask    = LPC32XX_CLKPWR_NANDCLK_MLCCLK_EN | +			  LPC32XX_CLKPWR_NANDCLK_DMA_INT | +			  LPC32XX_CLKPWR_NANDCLK_INTSEL_MLC, +	.get_rate       = local_return_parent_rate, +}; +  static struct clk clk_i2s0 = {  	.parent		= &clk_hclk,  	.enable		= local_onoff_enable, @@ -707,7 +718,8 @@ static struct clk clk_i2s1 = {  	.parent		= &clk_hclk,  	.enable		= local_onoff_enable,  	.enable_reg	= LPC32XX_CLKPWR_I2S_CLK_CTRL, -	.enable_mask	= LPC32XX_CLKPWR_I2SCTRL_I2SCLK1_EN, +	.enable_mask	= LPC32XX_CLKPWR_I2SCTRL_I2SCLK1_EN | +			  LPC32XX_CLKPWR_I2SCTRL_I2S1_USE_DMA,  	.get_rate	= local_return_parent_rate,  }; @@ -1120,8 +1132,9 @@ static struct clk_lookup lookups[] = {  	CLKDEV_INIT("31020300.i2c", NULL, &clk_i2c2),  	CLKDEV_INIT("dev:ssp0", NULL, &clk_ssp0),  	CLKDEV_INIT("dev:ssp1", NULL, &clk_ssp1), -	CLKDEV_INIT("lpc32xx_keys.0", NULL, &clk_kscan), -	CLKDEV_INIT("lpc32xx-nand.0", "nand_ck", &clk_nand), +	CLKDEV_INIT("40050000.key", NULL, &clk_kscan), +	CLKDEV_INIT("20020000.flash", NULL, &clk_nand), +	CLKDEV_INIT("200a8000.flash", NULL, &clk_nand_mlc),  	CLKDEV_INIT("40048000.adc", NULL, &clk_adc),  	CLKDEV_INIT(NULL, "i2s0_ck", &clk_i2s0),  	CLKDEV_INIT(NULL, "i2s1_ck", &clk_i2s1), diff --git a/arch/arm/mach-lpc32xx/include/mach/gpio.h b/arch/arm/mach-lpc32xx/include/mach/gpio.h index 2ba6ca412be..0052e7a7617 100644 --- a/arch/arm/mach-lpc32xx/include/mach/gpio.h +++ b/arch/arm/mach-lpc32xx/include/mach/gpio.h @@ -3,6 +3,4 @@  #include "gpio-lpc32xx.h" -#define ARCH_NR_GPIOS (LPC32XX_GPO_P3_GRP + LPC32XX_GPO_P3_MAX) -  #endif /* __MACH_GPIO_H */ diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c index 540106cdb9e..c1aabfcbde4 100644 --- a/arch/arm/mach-lpc32xx/phy3250.c +++ b/arch/arm/mach-lpc32xx/phy3250.c @@ -30,12 +30,13 @@  #include <linux/amba/bus.h>  #include <linux/amba/clcd.h>  #include <linux/amba/pl022.h> +#include <linux/amba/pl08x.h> +#include <linux/amba/mmci.h>  #include <linux/of.h>  #include <linux/of_address.h>  #include <linux/of_irq.h>  #include <linux/of_platform.h>  #include <linux/clk.h> -#include <linux/amba/pl08x.h>  #include <asm/setup.h>  #include <asm/mach-types.h> @@ -50,9 +51,12 @@  /*   * Mapped GPIOLIB GPIOs   */ -#define SPI0_CS_GPIO	LPC32XX_GPIO(LPC32XX_GPIO_P3_GRP, 5) -#define LCD_POWER_GPIO	LPC32XX_GPIO(LPC32XX_GPO_P3_GRP, 0) -#define BKL_POWER_GPIO	LPC32XX_GPIO(LPC32XX_GPO_P3_GRP, 4) +#define SPI0_CS_GPIO		LPC32XX_GPIO(LPC32XX_GPIO_P3_GRP, 5) +#define LCD_POWER_GPIO		LPC32XX_GPIO(LPC32XX_GPO_P3_GRP, 0) +#define BKL_POWER_GPIO		LPC32XX_GPIO(LPC32XX_GPO_P3_GRP, 4) +#define MMC_PWR_ENABLE_GPIO	LPC32XX_GPIO(LPC32XX_GPO_P3_GRP, 5) +#define MMC_CD_GPIO		LPC32XX_GPIO(LPC32XX_GPIO_P3_GRP, 1) +#define MMC_WP_GPIO		LPC32XX_GPIO(LPC32XX_GPIO_P3_GRP, 0)  /*   * AMBA LCD controller @@ -158,24 +162,6 @@ static struct clcd_board lpc32xx_clcd_data = {  /*   * AMBA SSP (SPI)   */ -static void phy3250_spi_cs_set(u32 control) -{ -	gpio_set_value(SPI0_CS_GPIO, (int) control); -} - -static struct pl022_config_chip spi0_chip_info = { -	.com_mode		= INTERRUPT_TRANSFER, -	.iface			= SSP_INTERFACE_MOTOROLA_SPI, -	.hierarchy		= SSP_MASTER, -	.slave_tx_disable	= 0, -	.rx_lev_trig		= SSP_RX_4_OR_MORE_ELEM, -	.tx_lev_trig		= SSP_TX_4_OR_MORE_EMPTY_LOC, -	.ctrl_len		= SSP_BITS_8, -	.wait_state		= SSP_MWIRE_WAIT_ZERO, -	.duplex			= SSP_MICROWIRE_CHANNEL_FULL_DUPLEX, -	.cs_control		= phy3250_spi_cs_set, -}; -  static struct pl022_ssp_controller lpc32xx_ssp0_data = {  	.bus_id			= 0,  	.num_chipselect		= 1, @@ -188,45 +174,57 @@ static struct pl022_ssp_controller lpc32xx_ssp1_data = {  	.enable_dma		= 0,  }; -/* AT25 driver registration */ -static int __init phy3250_spi_board_register(void) -{ -#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) -	static struct spi_board_info info[] = { -		{ -			.modalias = "spidev", -			.max_speed_hz = 5000000, -			.bus_num = 0, -			.chip_select = 0, -			.controller_data = &spi0_chip_info, -		}, -	}; +static struct pl08x_channel_data pl08x_slave_channels[] = { +	{ +		.bus_id = "nand-slc", +		.min_signal = 1, /* SLC NAND Flash */ +		.max_signal = 1, +		.periph_buses = PL08X_AHB1, +	}, +	{ +		.bus_id = "nand-mlc", +		.min_signal = 12, /* MLC NAND Flash */ +		.max_signal = 12, +		.periph_buses = PL08X_AHB1, +	}, +}; -#else -	static struct spi_eeprom eeprom = { -		.name = "at25256a", -		.byte_len = 0x8000, -		.page_size = 64, -		.flags = EE_ADDR2, -	}; +/* NOTE: These will change, according to RMK */ +static int pl08x_get_signal(struct pl08x_dma_chan *ch) +{ +	return ch->cd->min_signal; +} -	static struct spi_board_info info[] = { -		{ -			.modalias = "at25", -			.max_speed_hz = 5000000, -			.bus_num = 0, -			.chip_select = 0, -			.mode = SPI_MODE_0, -			.platform_data = &eeprom, -			.controller_data = &spi0_chip_info, -		}, -	}; -#endif -	return spi_register_board_info(info, ARRAY_SIZE(info)); +static void pl08x_put_signal(struct pl08x_dma_chan *ch) +{  } -arch_initcall(phy3250_spi_board_register);  static struct pl08x_platform_data pl08x_pd = { +	.slave_channels = &pl08x_slave_channels[0], +	.num_slave_channels = ARRAY_SIZE(pl08x_slave_channels), +	.get_signal = pl08x_get_signal, +	.put_signal = pl08x_put_signal, +	.lli_buses = PL08X_AHB1, +	.mem_buses = PL08X_AHB1, +}; + +static int mmc_handle_ios(struct device *dev, struct mmc_ios *ios) +{ +	/* Only on and off are supported */ +	if (ios->power_mode == MMC_POWER_OFF) +		gpio_set_value(MMC_PWR_ENABLE_GPIO, 0); +	else +		gpio_set_value(MMC_PWR_ENABLE_GPIO, 1); +	return 0; +} + +static struct mmci_platform_data lpc32xx_mmci_data = { +	.ocr_mask	= MMC_VDD_30_31 | MMC_VDD_31_32 | +			  MMC_VDD_32_33 | MMC_VDD_33_34, +	.ios_handler	= mmc_handle_ios, +	.dma_filter	= NULL, +	/* No DMA for now since AMBA PL080 dmaengine driver only does scatter +	 * gather, and the MMCI driver doesn't do it this way */  };  static const struct of_dev_auxdata lpc32xx_auxdata_lookup[] __initconst = { @@ -234,6 +232,8 @@ static const struct of_dev_auxdata lpc32xx_auxdata_lookup[] __initconst = {  	OF_DEV_AUXDATA("arm,pl022", 0x2008C000, "dev:ssp1", &lpc32xx_ssp1_data),  	OF_DEV_AUXDATA("arm,pl110", 0x31040000, "dev:clcd", &lpc32xx_clcd_data),  	OF_DEV_AUXDATA("arm,pl080", 0x31000000, "pl08xdmac", &pl08x_pd), +	OF_DEV_AUXDATA("arm,pl18x", 0x20098000, "20098000.sd", +		       &lpc32xx_mmci_data),  	{ }  }; @@ -241,10 +241,6 @@ static void __init lpc3250_machine_init(void)  {  	u32 tmp; -	/* Setup SLC NAND controller muxing */ -	__raw_writel(LPC32XX_CLKPWR_NANDCLK_SEL_SLC, -		LPC32XX_CLKPWR_NAND_CLK_CTRL); -  	/* Setup LCD muxing to RGB565 */  	tmp = __raw_readl(LPC32XX_CLKPWR_LCDCLK_CTRL) &  		~(LPC32XX_CLKPWR_LCDCTRL_LCDTYPE_MSK | @@ -264,34 +260,12 @@ static void __init lpc3250_machine_init(void)  		LPC32XX_CLKPWR_I2CCLK_I2C2HI_DRIVE;  	__raw_writel(tmp, LPC32XX_CLKPWR_I2C_CLK_CTRL); -	/* Disable IrDA pulsing support on UART6 */ -	tmp = __raw_readl(LPC32XX_UARTCTL_CTRL); -	tmp |= LPC32XX_UART_UART6_IRDAMOD_BYPASS; -	__raw_writel(tmp, LPC32XX_UARTCTL_CTRL); - -	/* Enable DMA for I2S1 channel */ -	tmp = __raw_readl(LPC32XX_CLKPWR_I2S_CLK_CTRL); -	tmp = LPC32XX_CLKPWR_I2SCTRL_I2S1_USE_DMA; -	__raw_writel(tmp, LPC32XX_CLKPWR_I2S_CLK_CTRL); -  	lpc32xx_serial_init(); -	/* -	 * AMBA peripheral clocks need to be enabled prior to AMBA device -	 * detection or a data fault will occur, so enable the clocks -	 * here. -	 */ -	tmp = __raw_readl(LPC32XX_CLKPWR_LCDCLK_CTRL); -	__raw_writel((tmp | LPC32XX_CLKPWR_LCDCTRL_CLK_EN), -		LPC32XX_CLKPWR_LCDCLK_CTRL); - -	tmp = __raw_readl(LPC32XX_CLKPWR_SSP_CLK_CTRL); -	__raw_writel((tmp | LPC32XX_CLKPWR_SSPCTRL_SSPCLK0_EN), -		LPC32XX_CLKPWR_SSP_CLK_CTRL); - -	tmp = __raw_readl(LPC32XX_CLKPWR_DMA_CLK_CTRL); -	__raw_writel((tmp | LPC32XX_CLKPWR_DMACLKCTRL_CLK_EN), -		     LPC32XX_CLKPWR_DMA_CLK_CTRL); +	tmp = __raw_readl(LPC32XX_CLKPWR_MS_CTRL); +	tmp |= LPC32XX_CLKPWR_MSCARD_SDCARD_EN | +		LPC32XX_CLKPWR_MSCARD_MSDIO_PU_EN; +	__raw_writel(tmp, LPC32XX_CLKPWR_MS_CTRL);  	/* Test clock needed for UDA1380 initial init */  	__raw_writel(LPC32XX_CLKPWR_TESTCLK2_SEL_MOSC | @@ -302,12 +276,10 @@ static void __init lpc3250_machine_init(void)  			     lpc32xx_auxdata_lookup, NULL);  	/* Register GPIOs used on this board */ -	if (gpio_request(SPI0_CS_GPIO, "spi0 cs")) -		printk(KERN_ERR "Error requesting gpio %u", -			SPI0_CS_GPIO); -	else if (gpio_direction_output(SPI0_CS_GPIO, 1)) -		printk(KERN_ERR "Error setting gpio %u to output", -			SPI0_CS_GPIO); +	if (gpio_request(MMC_PWR_ENABLE_GPIO, "mmc_power_en")) +		pr_err("Error requesting gpio %u", MMC_PWR_ENABLE_GPIO); +	else if (gpio_direction_output(MMC_PWR_ENABLE_GPIO, 1)) +		pr_err("Error setting gpio %u to output", MMC_PWR_ENABLE_GPIO);  }  static char const *lpc32xx_dt_compat[] __initdata = { diff --git a/arch/arm/mach-lpc32xx/serial.c b/arch/arm/mach-lpc32xx/serial.c index f2735281616..05621a29fba 100644 --- a/arch/arm/mach-lpc32xx/serial.c +++ b/arch/arm/mach-lpc32xx/serial.c @@ -31,59 +31,6 @@  #define LPC32XX_SUART_FIFO_SIZE	64 -/* Standard 8250/16550 compatible serial ports */ -static struct plat_serial8250_port serial_std_platform_data[] = { -#ifdef CONFIG_ARCH_LPC32XX_UART5_SELECT -	{ -		.membase        = io_p2v(LPC32XX_UART5_BASE), -		.mapbase        = LPC32XX_UART5_BASE, -		.irq		= IRQ_LPC32XX_UART_IIR5, -		.uartclk	= LPC32XX_MAIN_OSC_FREQ, -		.regshift	= 2, -		.iotype		= UPIO_MEM32, -		.flags		= UPF_BOOT_AUTOCONF | UPF_BUGGY_UART | -					UPF_SKIP_TEST, -	}, -#endif -#ifdef CONFIG_ARCH_LPC32XX_UART3_SELECT -	{ -		.membase	= io_p2v(LPC32XX_UART3_BASE), -		.mapbase        = LPC32XX_UART3_BASE, -		.irq		= IRQ_LPC32XX_UART_IIR3, -		.uartclk	= LPC32XX_MAIN_OSC_FREQ, -		.regshift	= 2, -		.iotype		= UPIO_MEM32, -		.flags		= UPF_BOOT_AUTOCONF | UPF_BUGGY_UART | -					UPF_SKIP_TEST, -	}, -#endif -#ifdef CONFIG_ARCH_LPC32XX_UART4_SELECT -	{ -		.membase	= io_p2v(LPC32XX_UART4_BASE), -		.mapbase        = LPC32XX_UART4_BASE, -		.irq		= IRQ_LPC32XX_UART_IIR4, -		.uartclk	= LPC32XX_MAIN_OSC_FREQ, -		.regshift	= 2, -		.iotype		= UPIO_MEM32, -		.flags		= UPF_BOOT_AUTOCONF | UPF_BUGGY_UART | -					UPF_SKIP_TEST, -	}, -#endif -#ifdef CONFIG_ARCH_LPC32XX_UART6_SELECT -	{ -		.membase	= io_p2v(LPC32XX_UART6_BASE), -		.mapbase        = LPC32XX_UART6_BASE, -		.irq		= IRQ_LPC32XX_UART_IIR6, -		.uartclk	= LPC32XX_MAIN_OSC_FREQ, -		.regshift	= 2, -		.iotype		= UPIO_MEM32, -		.flags		= UPF_BOOT_AUTOCONF | UPF_BUGGY_UART | -					UPF_SKIP_TEST, -	}, -#endif -	{ }, -}; -  struct uartinit {  	char *uart_ck_name;  	u32 ck_mode_mask; @@ -92,7 +39,6 @@ struct uartinit {  };  static struct uartinit uartinit_data[] __initdata = { -#ifdef CONFIG_ARCH_LPC32XX_UART5_SELECT  	{  		.uart_ck_name = "uart5_ck",  		.ck_mode_mask = @@ -100,8 +46,6 @@ static struct uartinit uartinit_data[] __initdata = {  		.pdiv_clk_reg = LPC32XX_CLKPWR_UART5_CLK_CTRL,  		.mapbase = LPC32XX_UART5_BASE,  	}, -#endif -#ifdef CONFIG_ARCH_LPC32XX_UART3_SELECT  	{  		.uart_ck_name = "uart3_ck",  		.ck_mode_mask = @@ -109,8 +53,6 @@ static struct uartinit uartinit_data[] __initdata = {  		.pdiv_clk_reg = LPC32XX_CLKPWR_UART3_CLK_CTRL,  		.mapbase = LPC32XX_UART3_BASE,  	}, -#endif -#ifdef CONFIG_ARCH_LPC32XX_UART4_SELECT  	{  		.uart_ck_name = "uart4_ck",  		.ck_mode_mask = @@ -118,8 +60,6 @@ static struct uartinit uartinit_data[] __initdata = {  		.pdiv_clk_reg = LPC32XX_CLKPWR_UART4_CLK_CTRL,  		.mapbase = LPC32XX_UART4_BASE,  	}, -#endif -#ifdef CONFIG_ARCH_LPC32XX_UART6_SELECT  	{  		.uart_ck_name = "uart6_ck",  		.ck_mode_mask = @@ -127,19 +67,6 @@ static struct uartinit uartinit_data[] __initdata = {  		.pdiv_clk_reg = LPC32XX_CLKPWR_UART6_CLK_CTRL,  		.mapbase = LPC32XX_UART6_BASE,  	}, -#endif -}; - -static struct platform_device serial_std_platform_device = { -	.name			= "serial8250", -	.id			= 0, -	.dev			= { -		.platform_data	= serial_std_platform_data, -	}, -}; - -static struct platform_device *lpc32xx_serial_devs[] __initdata = { -	&serial_std_platform_device,  };  void __init lpc32xx_serial_init(void) @@ -156,15 +83,8 @@ void __init lpc32xx_serial_init(void)  		clk = clk_get(NULL, uartinit_data[i].uart_ck_name);  		if (!IS_ERR(clk)) {  			clk_enable(clk); -			serial_std_platform_data[i].uartclk = -				clk_get_rate(clk);  		} -		/* Fall back on main osc rate if clock rate return fails */ -		if (serial_std_platform_data[i].uartclk == 0) -			serial_std_platform_data[i].uartclk = -				LPC32XX_MAIN_OSC_FREQ; -  		/* Setup UART clock modes for all UARTs, disable autoclock */  		clkmodes |= uartinit_data[i].ck_mode_mask; @@ -189,7 +109,7 @@ void __init lpc32xx_serial_init(void)  	__raw_writel(clkmodes, LPC32XX_UARTCTL_CLKMODE);  	for (i = 0; i < ARRAY_SIZE(uartinit_data); i++) {  		/* Force a flush of the RX FIFOs to work around a HW bug */ -		puart = serial_std_platform_data[i].mapbase; +		puart = uartinit_data[i].mapbase;  		__raw_writel(0xC1, LPC32XX_UART_IIR_FCR(puart));  		__raw_writel(0x00, LPC32XX_UART_DLL_FIFO(puart));  		j = LPC32XX_SUART_FIFO_SIZE; @@ -198,11 +118,13 @@ void __init lpc32xx_serial_init(void)  		__raw_writel(0, LPC32XX_UART_IIR_FCR(puart));  	} +	/* Disable IrDA pulsing support on UART6 */ +	tmp = __raw_readl(LPC32XX_UARTCTL_CTRL); +	tmp |= LPC32XX_UART_UART6_IRDAMOD_BYPASS; +	__raw_writel(tmp, LPC32XX_UARTCTL_CTRL); +  	/* Disable UART5->USB transparent mode or USB won't work */  	tmp = __raw_readl(LPC32XX_UARTCTL_CTRL);  	tmp &= ~LPC32XX_UART_U5_ROUTE_TO_USB;  	__raw_writel(tmp, LPC32XX_UARTCTL_CTRL); - -	platform_add_devices(lpc32xx_serial_devs, -		ARRAY_SIZE(lpc32xx_serial_devs));  }  |