* Re: [PATCH 0/11] Update support for MPC512x
From: Wolfram Sang @ 2010-01-26 12:16 UTC (permalink / raw)
To: Anatolij Gustschin
Cc: rtc-linux, dzu, netdev, linux-usb, linuxppc-dev, linux-mtd,
linux-i2c, Dan Williams
In-Reply-To: <20100126090633.74257b1a@wker>
[-- Attachment #1: Type: text/plain, Size: 671 bytes --]
> No, I don't have a git tree for this now, sorry.
No problem, I set one up at:
git://git.pengutronix.de/git/wsa/linux-2.6.git
It is based on 2.6.33-rc5 and contains the newest patches for FEC and I2C. (I
will pick up the patches as they show up on the lists, so this tree will be
rebased!)
This tree includes all MPC5121-patches and the two USB-patches from Anton. I
haven't actually tested them yet, but they all applied cleanly, at least.
Testing will come soon...
Regards,
Wolfram
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
* [PATCH 1/2] powerpc/44x: Add MTD support (NOR FLASH) to Katmai dts
From: Stefan Roese @ 2010-01-26 13:50 UTC (permalink / raw)
To: linuxppc-dev
This patch adds NOR FLASH MTD support to the Katmai (440SPe) dts file.
Additionally with a small whitespace cleanup.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
---
arch/powerpc/boot/dts/katmai.dts | 71 +++++++++++++++++++++++++++----------
1 files changed, 52 insertions(+), 19 deletions(-)
diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts
index 8f345de..8cf2c0c 100644
--- a/arch/powerpc/boot/dts/katmai.dts
+++ b/arch/powerpc/boot/dts/katmai.dts
@@ -156,7 +156,7 @@
compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
#address-cells = <1>;
#size-cells = <1>;
- ranges = <0x00000000 0x00000004 0xe0000000 0x20000000>;
+ ranges = <0xe0000000 0x00000004 0xe0000000 0x20000000>;
clock-frequency = <0>; /* Filled in by zImage */
EBC0: ebc {
@@ -165,14 +165,47 @@
#address-cells = <2>;
#size-cells = <1>;
clock-frequency = <0>; /* Filled in by zImage */
+ /* ranges property is supplied by U-Boot */
interrupts = <0x5 0x1>;
interrupt-parent = <&UIC1>;
+
+ nor_flash@0,0 {
+ compatible = "cfi-flash";
+ bank-width = <2>;
+ reg = <0x00000000 0x00000000 0x01000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ partition@0 {
+ label = "kernel";
+ reg = <0x00000000 0x001e0000>;
+ };
+ partition@1e0000 {
+ label = "dtb";
+ reg = <0x001e0000 0x00020000>;
+ };
+ partition@200000 {
+ label = "root";
+ reg = <0x00200000 0x00200000>;
+ };
+ partition@400000 {
+ label = "user";
+ reg = <0x00400000 0x00b60000>;
+ };
+ partition@f60000 {
+ label = "env";
+ reg = <0x00f60000 0x00040000>;
+ };
+ partition@fa0000 {
+ label = "u-boot";
+ reg = <0x00fa0000 0x00060000>;
+ };
+ };
};
- UART0: serial@10000200 {
+ UART0: serial@f0000200 {
device_type = "serial";
compatible = "ns16550";
- reg = <0x10000200 0x00000008>;
+ reg = <0xf0000200 0x00000008>;
virtual-reg = <0xa0000200>;
clock-frequency = <0>; /* Filled in by zImage */
current-speed = <115200>;
@@ -180,10 +213,10 @@
interrupts = <0x0 0x4>;
};
- UART1: serial@10000300 {
+ UART1: serial@f0000300 {
device_type = "serial";
compatible = "ns16550";
- reg = <0x10000300 0x00000008>;
+ reg = <0xf0000300 0x00000008>;
virtual-reg = <0xa0000300>;
clock-frequency = <0>;
current-speed = <0>;
@@ -192,10 +225,10 @@
};
- UART2: serial@10000600 {
+ UART2: serial@f0000600 {
device_type = "serial";
compatible = "ns16550";
- reg = <0x10000600 0x00000008>;
+ reg = <0xf0000600 0x00000008>;
virtual-reg = <0xa0000600>;
clock-frequency = <0>;
current-speed = <0>;
@@ -203,27 +236,27 @@
interrupts = <0x5 0x4>;
};
- IIC0: i2c@10000400 {
+ IIC0: i2c@f0000400 {
compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
- reg = <0x10000400 0x00000014>;
+ reg = <0xf0000400 0x00000014>;
interrupt-parent = <&UIC0>;
interrupts = <0x2 0x4>;
};
- IIC1: i2c@10000500 {
+ IIC1: i2c@f0000500 {
compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
- reg = <0x10000500 0x00000014>;
+ reg = <0xf0000500 0x00000014>;
interrupt-parent = <&UIC0>;
interrupts = <0x3 0x4>;
};
- EMAC0: ethernet@10000800 {
+ EMAC0: ethernet@f0000800 {
linux,network-index = <0x0>;
device_type = "network";
compatible = "ibm,emac-440spe", "ibm,emac4";
interrupt-parent = <&UIC1>;
interrupts = <0x1c 0x4 0x1d 0x4>;
- reg = <0x10000800 0x00000074>;
+ reg = <0xf0000800 0x00000074>;
local-mac-address = [000000000000];
mal-device = <&MAL0>;
mal-tx-channel = <0>;
@@ -248,11 +281,11 @@
primary;
large-inbound-windows;
enable-msi-hole;
- reg = <0x0000000c 0x0ec00000 0x00000008 /* Config space access */
- 0x00000000 0x00000000 0x00000000 /* no IACK cycles */
- 0x0000000c 0x0ed00000 0x00000004 /* Special cycles */
- 0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
- 0x0000000c 0x0ec80100 0x000000fc>; /* Internal messaging registers */
+ reg = <0x0000000c 0x0ec00000 0x00000008 /* Config space access */
+ 0x00000000 0x00000000 0x00000000 /* no IACK cycles */
+ 0x0000000c 0x0ed00000 0x00000004 /* Special cycles */
+ 0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
+ 0x0000000c 0x0ec80100 0x000000fc>; /* Internal messaging registers */
/* Outbound ranges, one memory and one IO,
* later cannot be changed
@@ -453,6 +486,6 @@
};
chosen {
- linux,stdout-path = "/plb/opb/serial@10000200";
+ linux,stdout-path = "/plb/opb/serial@f0000200";
};
};
--
1.6.6.1
^ permalink raw reply related
* [PATCH 2/2] powerpc/44x: Add MTD support to katmai defconfig
From: Stefan Roese @ 2010-01-26 13:50 UTC (permalink / raw)
To: linuxppc-dev
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
---
arch/powerpc/configs/44x/katmai_defconfig | 339 +++++++++++++++++++++++------
1 files changed, 274 insertions(+), 65 deletions(-)
diff --git a/arch/powerpc/configs/44x/katmai_defconfig b/arch/powerpc/configs/44x/katmai_defconfig
index c23a4ef..af244e1 100644
--- a/arch/powerpc/configs/44x/katmai_defconfig
+++ b/arch/powerpc/configs/44x/katmai_defconfig
@@ -1,14 +1,14 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.29-rc2
-# Tue Jan 20 08:22:38 2009
+# Linux kernel version: 2.6.33-rc5
+# Tue Jan 26 14:40:58 2010
#
# CONFIG_PPC64 is not set
#
# Processor support
#
-# CONFIG_6xx is not set
+# CONFIG_PPC_BOOK3S_32 is not set
# CONFIG_PPC_85xx is not set
# CONFIG_PPC_8xx is not set
# CONFIG_40x is not set
@@ -19,6 +19,7 @@ CONFIG_BOOKE=y
CONFIG_PTE_64BIT=y
CONFIG_PHYS_64BIT=y
CONFIG_PPC_MMU_NOHASH=y
+CONFIG_PPC_MMU_NOHASH_32=y
# CONFIG_PPC_MM_SLICES is not set
CONFIG_NOT_COHERENT_CACHE=y
CONFIG_PPC32=y
@@ -30,15 +31,18 @@ CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
+# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
CONFIG_IRQ_PER_CPU=y
+CONFIG_NR_IRQS=512
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_ARCH_HAS_ILOG2_U32=y
CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
CONFIG_PPC=y
@@ -52,11 +56,15 @@ CONFIG_PPC_UDBG_16550=y
# CONFIG_GENERIC_TBSYNC is not set
CONFIG_AUDIT_ARCH=y
CONFIG_GENERIC_BUG=y
+CONFIG_DTC=y
# CONFIG_DEFAULT_UIMAGE is not set
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_PPC_DCR_NATIVE=y
# CONFIG_PPC_DCR_MMIO is not set
CONFIG_PPC_DCR=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
#
# General setup
@@ -70,9 +78,21 @@ CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
+# CONFIG_RCU_TRACE is not set
+CONFIG_RCU_FANOUT=32
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_RCU_TRACE is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_GROUP_SCHED is not set
@@ -83,8 +103,13 @@ CONFIG_SYSFS_DEPRECATED_V2=y
# CONFIG_NAMESPACES is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_LZO is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
CONFIG_EMBEDDED=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
@@ -94,19 +119,25 @@ CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
-CONFIG_COMPAT_BRK=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
+CONFIG_HAVE_PERF_EVENTS=y
+
+#
+# Kernel Performance Events And Counters
+#
+# CONFIG_PERF_EVENTS is not set
+# CONFIG_PERF_COUNTERS is not set
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_PCI_QUIRKS=y
CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
@@ -118,6 +149,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_SLOW_WORK is not set
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
@@ -129,8 +167,7 @@ CONFIG_MODULE_UNLOAD=y
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_BLOCK=y
-CONFIG_LBD=y
-# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LBDAF=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_BLK_DEV_INTEGRITY is not set
@@ -138,19 +175,41 @@ CONFIG_LBD=y
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
-CONFIG_DEFAULT_AS=y
# CONFIG_DEFAULT_DEADLINE is not set
-# CONFIG_DEFAULT_CFQ is not set
+CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="anticipatory"
-CONFIG_CLASSIC_RCU=y
-# CONFIG_TREE_RCU is not set
-# CONFIG_PREEMPT_RCU is not set
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_PREEMPT_RCU_TRACE is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+CONFIG_INLINE_READ_UNLOCK=y
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+CONFIG_INLINE_WRITE_UNLOCK=y
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+# CONFIG_MUTEX_SPIN_ON_OWNER is not set
# CONFIG_FREEZER is not set
CONFIG_PPC4xx_PCI_EXPRESS=y
@@ -171,6 +230,8 @@ CONFIG_KATMAI=y
# CONFIG_ARCHES is not set
# CONFIG_CANYONLANDS is not set
# CONFIG_GLACIER is not set
+# CONFIG_REDWOOD is not set
+# CONFIG_EIGER is not set
# CONFIG_YOSEMITE is not set
# CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
CONFIG_PPC44x_SIMPLE=y
@@ -212,10 +273,12 @@ CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_MATH_EMULATION is not set
# CONFIG_IOMMU_HELPER is not set
-CONFIG_PPC_NEED_DMA_SYNC_OPS=y
+# CONFIG_SWIOTLB is not set
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_ARCH_HAS_WALK_MEMORY=y
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_MAX_ACTIVE_REGIONS=32
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y
@@ -231,10 +294,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
-CONFIG_UNEVICTABLE_LRU=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_STDBINUTILS=y
CONFIG_PPC_4K_PAGES=y
# CONFIG_PPC_16K_PAGES is not set
# CONFIG_PPC_64K_PAGES is not set
+# CONFIG_PPC_256K_PAGES is not set
CONFIG_FORCE_MAX_ZONEORDER=11
CONFIG_PROC_DEVICETREE=y
CONFIG_CMDLINE_BOOL=y
@@ -259,6 +325,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
# CONFIG_PCI_LEGACY is not set
# CONFIG_PCI_DEBUG is not set
# CONFIG_PCI_STUB is not set
+# CONFIG_PCI_IOV is not set
# CONFIG_PCCARD is not set
# CONFIG_HOTPLUG_PCI is not set
# CONFIG_HAS_RAPIDIO is not set
@@ -276,14 +343,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
CONFIG_KERNEL_START=0xc0000000
CONFIG_PHYSICAL_START=0x00000000
CONFIG_TASK_SIZE=0xc0000000
-CONFIG_CONSISTENT_START=0xff100000
CONFIG_CONSISTENT_SIZE=0x00200000
CONFIG_NET=y
#
# Networking options
#
-CONFIG_COMPAT_NET_DEV_OPS=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
@@ -320,6 +385,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
@@ -333,6 +399,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
# CONFIG_NET_SCHED is not set
# CONFIG_DCB is not set
@@ -345,8 +413,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set
-# CONFIG_PHONET is not set
-# CONFIG_WIRELESS is not set
+CONFIG_WIRELESS=y
+# CONFIG_CFG80211 is not set
+# CONFIG_LIB80211 is not set
+
+#
+# CFG80211 needs to be enabled for MAC80211
+#
# CONFIG_WIMAX is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set
@@ -359,6 +432,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+# CONFIG_DEVTMPFS is not set
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
@@ -369,7 +443,90 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP_OF=y
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
CONFIG_OF_DEVICE=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
@@ -380,6 +537,7 @@ CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
CONFIG_BLK_DEV_RAM=y
@@ -392,12 +550,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
# CONFIG_BLK_DEV_HD is not set
CONFIG_MISC_DEVICES=y
# CONFIG_PHANTOM is not set
-# CONFIG_EEPROM_93CX6 is not set
# CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set
# CONFIG_ENCLOSURE_SERVICES is not set
# CONFIG_HP_ILO is not set
# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_CB710_CORE is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
@@ -417,7 +580,11 @@ CONFIG_HAVE_IDE=y
#
#
-# Enable only one of the two stacks, unless you know what you are doing
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# The newer stack is recommended.
#
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
@@ -440,6 +607,8 @@ CONFIG_NET_ETHERNET=y
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_ETHOC is not set
+# CONFIG_DNET is not set
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
CONFIG_IBM_NEW_EMAC=y
@@ -458,7 +627,10 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
# CONFIG_NET_PCI is not set
# CONFIG_B44 is not set
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851_MLL is not set
# CONFIG_ATL2 is not set
+# CONFIG_XILINX_EMACLITE is not set
CONFIG_NETDEV_1000=y
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
@@ -466,6 +638,7 @@ CONFIG_NETDEV_1000=y
# CONFIG_E1000E is not set
# CONFIG_IP1000 is not set
# CONFIG_IGB is not set
+# CONFIG_IGBVF is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
@@ -476,9 +649,13 @@ CONFIG_NETDEV_1000=y
# CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set
+# CONFIG_CNIC is not set
+# CONFIG_MV643XX_ETH is not set
+# CONFIG_XILINX_LL_TEMAC is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
# CONFIG_JME is not set
CONFIG_NETDEV_10000=y
# CONFIG_CHELSIO_T1 is not set
@@ -488,6 +665,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
# CONFIG_IXGBE is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
+# CONFIG_VXGE is not set
# CONFIG_MYRI10GE is not set
# CONFIG_NETXEN_NIC is not set
# CONFIG_NIU is not set
@@ -497,14 +675,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
# CONFIG_BNX2X is not set
# CONFIG_QLGE is not set
# CONFIG_SFC is not set
+# CONFIG_BE2NET is not set
# CONFIG_TR is not set
-
-#
-# Wireless LAN
-#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
-# CONFIG_IWLWIFI_LEDS is not set
+CONFIG_WLAN=y
+# CONFIG_AIRO is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_HOSTAP is not set
#
# Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -517,6 +694,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_VMXNET3 is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set
@@ -562,6 +740,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_SERIAL_OF_PLATFORM=y
# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
+# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
CONFIG_LEGACY_PTYS=y
@@ -578,13 +757,17 @@ CONFIG_LEGACY_PTY_COUNT=256
CONFIG_DEVPORT=y
# CONFIG_I2C is not set
# CONFIG_SPI is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
# CONFIG_GPIOLIB is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_THERMAL is not set
-# CONFIG_THERMAL_HWMON is not set
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
@@ -601,27 +784,13 @@ CONFIG_SSB_POSSIBLE=y
# CONFIG_HTC_PASIC3 is not set
# CONFIG_MFD_TMIO is not set
# CONFIG_REGULATOR is not set
-
-#
-# Multimedia devices
-#
-
-#
-# Multimedia core support
-#
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_DVB_CORE is not set
-# CONFIG_VIDEO_MEDIA is not set
-
-#
-# Multimedia drivers
-#
-CONFIG_DAB=y
+# CONFIG_MEDIA_SUPPORT is not set
#
# Graphics support
#
# CONFIG_AGP is not set
+CONFIG_VGA_ARB=y
# CONFIG_DRM is not set
# CONFIG_VGASTATE is not set
CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -646,7 +815,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
#
#
-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
#
# CONFIG_USB_GADGET is not set
@@ -662,7 +831,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
# CONFIG_EDAC is not set
# CONFIG_RTC_CLASS is not set
# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
# CONFIG_UIO is not set
+
+#
+# TI VLYNQ
+#
# CONFIG_STAGING is not set
#
@@ -676,11 +850,13 @@ CONFIG_EXT2_FS=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
-CONFIG_FILE_LOCKING=y
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
@@ -690,6 +866,11 @@ CONFIG_INOTIFY_USER=y
# CONFIG_FUSE_FS is not set
#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
@@ -722,6 +903,7 @@ CONFIG_MISC_FILESYSTEMS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=y
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
@@ -743,7 +925,6 @@ CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
-# CONFIG_SUNRPC_REGISTER_V4 is not set
# CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set
@@ -759,6 +940,7 @@ CONFIG_SUNRPC=y
CONFIG_MSDOS_PARTITION=y
# CONFIG_NLS is not set
# CONFIG_DLM is not set
+# CONFIG_BINARY_PRINTF is not set
#
# Library routines
@@ -773,11 +955,13 @@ CONFIG_CRC32=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
-CONFIG_PLIST=y
+CONFIG_DECOMPRESS_GZIP=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_HAVE_LMB=y
+CONFIG_NLATTR=y
+CONFIG_GENERIC_ATOMIC64=y
#
# Kernel hacking
@@ -787,6 +971,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
+# CONFIG_STRIP_ASM_SYMS is not set
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
@@ -795,16 +980,23 @@ CONFIG_DEBUG_KERNEL=y
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_SCHED_DEBUG=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
@@ -816,35 +1008,43 @@ CONFIG_SCHED_DEBUG=y
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_SG is not set
# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
# CONFIG_FAULT_INJECTION is not set
# CONFIG_LATENCYTOP is not set
CONFIG_SYSCTL_SYSCALL_CHECK=y
+# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-
-#
-# Tracers
-#
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
# CONFIG_SCHED_TRACER is not set
-# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
# CONFIG_BOOT_TRACER is not set
-# CONFIG_TRACE_BRANCH_PROFILING is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_STACK_TRACER is not set
-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_DMA_API_DEBUG is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
+# CONFIG_PPC_DISABLE_WERROR is not set
+CONFIG_PPC_WERROR=y
CONFIG_PRINT_STACK_DEPTH=64
# CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_CODE_PATCHING_SELFTEST is not set
# CONFIG_FTR_FIXUP_SELFTEST is not set
# CONFIG_MSI_BITMAP_SELFTEST is not set
@@ -859,13 +1059,16 @@ CONFIG_PRINT_STACK_DEPTH=64
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITYFS is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
CONFIG_CRYPTO=y
#
# Crypto core or helper
#
-# CONFIG_CRYPTO_FIPS is not set
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD2=y
@@ -874,10 +1077,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
# CONFIG_CRYPTO_GF128MUL is not set
# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
# CONFIG_CRYPTO_CRYPTD is not set
# CONFIG_CRYPTO_AUTHENC is not set
# CONFIG_CRYPTO_TEST is not set
@@ -905,11 +1110,13 @@ CONFIG_CRYPTO_PCBC=y
#
# CONFIG_CRYPTO_HMAC is not set
# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
#
# Digest
#
# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_GHASH is not set
# CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=y
# CONFIG_CRYPTO_MICHAEL_MIC is not set
@@ -946,6 +1153,7 @@ CONFIG_CRYPTO_DES=y
# Compression
#
# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set
#
@@ -954,5 +1162,6 @@ CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_ANSI_CPRNG is not set
CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+# CONFIG_CRYPTO_DEV_PPC4XX is not set
# CONFIG_PPC_CLOCK is not set
# CONFIG_VIRTUALIZATION is not set
--
1.6.6.1
^ permalink raw reply related
* Re: [PATCH v2 1/3] i2c-mpc: use __devinit[data] for initialization functions and data
From: Ben Dooks @ 2010-01-26 14:35 UTC (permalink / raw)
To: Wolfgang Grandegger
Cc: Devicetree-discuss, Linuxppc-dev, Linux-i2c, Wolfgang Grandegger
In-Reply-To: <1264452906-32536-2-git-send-email-wg@grandegger.com>
On Mon, Jan 25, 2010 at 09:55:04PM +0100, Wolfgang Grandegger wrote:
> From: Wolfgang Grandegger <wg@denx.de>
>
> "__devinit[data]" has not yet been used for all initialization functions
> and data. To avoid truncating lines, the struct mpc_i2c_match_data has
> been renamed to mpc_i2c_data, which is even the better name.
>
> Signed-off-by: Wolfgang Grandegger <wg@denx.de>
> ---
> drivers/i2c/busses/i2c-mpc.c | 99 +++++++++++++++++++----------------------
> 1 files changed, 46 insertions(+), 53 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index f627001..2cb864e 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -66,7 +66,7 @@ struct mpc_i2c_divider {
> u16 fdr; /* including dfsrr */
> };
>
> -struct mpc_i2c_match_data {
> +struct mpc_i2c_data {
> void (*setclock)(struct device_node *node,
> struct mpc_i2c *i2c,
> u32 clock, u32 prescaler);
> @@ -165,7 +165,7 @@ static int i2c_wait(struct mpc_i2c *i2c, unsigned timeout, int writing)
> }
>
> #ifdef CONFIG_PPC_MPC52xx
> -static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
> +static const struct __devinitdata mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
> {20, 0x20}, {22, 0x21}, {24, 0x22}, {26, 0x23},
> {28, 0x24}, {30, 0x01}, {32, 0x25}, {34, 0x02},
> {36, 0x26}, {40, 0x27}, {44, 0x04}, {48, 0x28},
> @@ -186,7 +186,8 @@ static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
> {10240, 0x9d}, {12288, 0x9e}, {15360, 0x9f}
> };
>
> -int mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock, int prescaler)
> +static int __devinit mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock,
> + int prescaler)
> {
> const struct mpc_i2c_divider *div = NULL;
> unsigned int pvr = mfspr(SPRN_PVR);
> @@ -215,9 +216,9 @@ int mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock, int prescaler)
> return div ? (int)div->fdr : -EINVAL;
> }
>
> -static void mpc_i2c_setclock_52xx(struct device_node *node,
> - struct mpc_i2c *i2c,
> - u32 clock, u32 prescaler)
> +static void __devinit mpc_i2c_setclock_52xx(struct device_node *node,
> + struct mpc_i2c *i2c,
> + u32 clock, u32 prescaler)
> {
> int ret, fdr;
>
> @@ -230,15 +231,15 @@ static void mpc_i2c_setclock_52xx(struct device_node *node,
> dev_info(i2c->dev, "clock %d Hz (fdr=%d)\n", clock, fdr);
> }
> #else /* !CONFIG_PPC_MPC52xx */
> -static void mpc_i2c_setclock_52xx(struct device_node *node,
> - struct mpc_i2c *i2c,
> - u32 clock, u32 prescaler)
> +static void __devinit mpc_i2c_setclock_52xx(struct device_node *node,
> + struct mpc_i2c *i2c,
> + u32 clock, u32 prescaler)
> {
> }
> #endif /* CONFIG_PPC_MPC52xx*/
>
> #ifdef CONFIG_FSL_SOC
> -static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
> +static const struct __devinitdata mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
> {160, 0x0120}, {192, 0x0121}, {224, 0x0122}, {256, 0x0123},
> {288, 0x0100}, {320, 0x0101}, {352, 0x0601}, {384, 0x0102},
> {416, 0x0602}, {448, 0x0126}, {480, 0x0103}, {512, 0x0127},
> @@ -258,7 +259,7 @@ static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
> {49152, 0x011e}, {61440, 0x011f}
> };
>
> -u32 mpc_i2c_get_sec_cfg_8xxx(void)
> +static u32 __devinit mpc_i2c_get_sec_cfg_8xxx(void)
> {
> struct device_node *node = NULL;
> u32 __iomem *reg;
> @@ -287,7 +288,8 @@ u32 mpc_i2c_get_sec_cfg_8xxx(void)
> return val;
> }
>
> -int mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock, u32 prescaler)
> +static int __devinit mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock,
> + u32 prescaler)
> {
> const struct mpc_i2c_divider *div = NULL;
> u32 divider;
> @@ -320,9 +322,9 @@ int mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock, u32 prescaler)
> return div ? (int)div->fdr : -EINVAL;
> }
>
> -static void mpc_i2c_setclock_8xxx(struct device_node *node,
> - struct mpc_i2c *i2c,
> - u32 clock, u32 prescaler)
> +static void __devinit mpc_i2c_setclock_8xxx(struct device_node *node,
> + struct mpc_i2c *i2c,
> + u32 clock, u32 prescaler)
> {
> int ret, fdr;
>
> @@ -338,9 +340,9 @@ static void mpc_i2c_setclock_8xxx(struct device_node *node,
> }
>
> #else /* !CONFIG_FSL_SOC */
> -static void mpc_i2c_setclock_8xxx(struct device_node *node,
> - struct mpc_i2c *i2c,
> - u32 clock, u32 prescaler)
> +static void __devinit mpc_i2c_setclock_8xxx(struct device_node *node,
> + struct mpc_i2c *i2c,
> + u32 clock, u32 prescaler)
> {
> }
> #endif /* CONFIG_FSL_SOC */
> @@ -529,8 +531,8 @@ static int __devinit fsl_i2c_probe(struct of_device *op,
> clock = *prop;
>
> if (match->data) {
> - struct mpc_i2c_match_data *data =
> - (struct mpc_i2c_match_data *)match->data;
> + struct mpc_i2c_data *data =
> + (struct mpc_i2c_data *)match->data;
> data->setclock(op->node, i2c, clock, data->prescaler);
> } else {
> /* Backwards compatibility */
> @@ -582,44 +584,35 @@ static int __devexit fsl_i2c_remove(struct of_device *op)
> return 0;
> };
>
> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_52xx = {
> + .setclock = mpc_i2c_setclock_52xx,
> +};
> +
> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_8313 = {
> + .setclock = mpc_i2c_setclock_8xxx,
> +};
> +
> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_8543 = {
> + .setclock = mpc_i2c_setclock_8xxx,
> + .prescaler = 2,
> +};
> +
> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_8544 = {
> + .setclock = mpc_i2c_setclock_8xxx,
> + .prescaler = 3,
> +};
> +
> static const struct of_device_id mpc_i2c_of_match[] = {
> - {.compatible = "mpc5200-i2c",
> - .data = &(struct mpc_i2c_match_data) {
> - .setclock = mpc_i2c_setclock_52xx,
> - },
> - },
> - {.compatible = "fsl,mpc5200b-i2c",
> - .data = &(struct mpc_i2c_match_data) {
> - .setclock = mpc_i2c_setclock_52xx,
> - },
> - },
> - {.compatible = "fsl,mpc5200-i2c",
> - .data = &(struct mpc_i2c_match_data) {
> - .setclock = mpc_i2c_setclock_52xx,
> - },
> - },
> - {.compatible = "fsl,mpc8313-i2c",
> - .data = &(struct mpc_i2c_match_data) {
> - .setclock = mpc_i2c_setclock_8xxx,
> - },
> - },
> - {.compatible = "fsl,mpc8543-i2c",
> - .data = &(struct mpc_i2c_match_data) {
> - .setclock = mpc_i2c_setclock_8xxx,
> - .prescaler = 2,
> - },
> - },
> - {.compatible = "fsl,mpc8544-i2c",
> - .data = &(struct mpc_i2c_match_data) {
> - .setclock = mpc_i2c_setclock_8xxx,
> - .prescaler = 3,
> - },
> + {.compatible = "mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
> + {.compatible = "fsl,mpc5200b-i2c", .data = &mpc_i2c_data_52xx, },
> + {.compatible = "fsl,mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
> + {.compatible = "fsl,mpc8313-i2c", .data = &mpc_i2c_data_8313, },
> + {.compatible = "fsl,mpc8543-i2c", .data = &mpc_i2c_data_8543, },
> + {.compatible = "fsl,mpc8544-i2c", .data = &mpc_i2c_data_8544, },
> /* Backward compatibility */
> - },
> {.compatible = "fsl-i2c", },
> {},
> };
Any particular reason you decided to move this all about?
Are you sure that __devinitdata is the right thing here, I've no idea
if there is currently any hotplug type support for openfirmware or
not.
--
Ben (ben@fluff.org, http://www.fluff.org/)
'a smiley only costs 4 bytes'
^ permalink raw reply
* Re: [PATCH 2/3] i2c-mpc: add support for the MPC512x processors from Freescale
From: Ben Dooks @ 2010-01-26 14:39 UTC (permalink / raw)
To: Wolfram Sang
Cc: Wolfgang Grandegger, Devicetree-discuss, Linuxppc-dev, Linux-i2c
In-Reply-To: <20100125151509.GD5257@pengutronix.de>
On Mon, Jan 25, 2010 at 04:15:09PM +0100, Wolfram Sang wrote:
> > >>
> > >> -static void __devinit mpc_i2c_setclock_52xx(struct device_node *node,
> > >> - struct mpc_i2c *i2c,
> > >> - u32 clock, u32 prescaler)
> > >> +static void __devinit mpc_i2c_setup_52xx(struct device_node *node,
> > >> + struct mpc_i2c *i2c,
> > >> + u32 clock, u32 prescaler)
> > >> {
> > >> int ret, fdr;
> > >>
> > >> + if (clock == -1) {
> > >
> > > Could we use 0 for 'no_clock'? This would make the above statement simply
> >
> > "0" is already used to maintain backward compatibility setting a safe
> > divider.
>
> Ah, now I see:
>
> 'clock == -1' means 'preserve clocks' (and is checked here in mpc_i2c_setup_52xx())
> 'clock == 0' means 'safe divider' (and is checked in mpc_i2c_get_fdr_52xx())
hmm, sounds like a job for a #define or similar.
> This is not a beauty ;)
>
> What about adding a flags variable to the setup-functions?
>
> Regards,
>
> Wolfram
>
> --
> Pengutronix e.K. | Wolfram Sang |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
--
Ben (ben@fluff.org, http://www.fluff.org/)
'a smiley only costs 4 bytes'
^ permalink raw reply
* Re: [PATCH 1/2] powerpc/44x: Add MTD support (NOR FLASH) to Katmai dts
From: Josh Boyer @ 2010-01-26 15:04 UTC (permalink / raw)
To: Stefan Roese; +Cc: linuxppc-dev
In-Reply-To: <1264513807-16289-1-git-send-email-sr@denx.de>
On Tue, Jan 26, 2010 at 02:50:07PM +0100, Stefan Roese wrote:
>This patch adds NOR FLASH MTD support to the Katmai (440SPe) dts file.
>
>Additionally with a small whitespace cleanup.
>
>Signed-off-by: Stefan Roese <sr@denx.de>
>Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
>---
> arch/powerpc/boot/dts/katmai.dts | 71 +++++++++++++++++++++++++++----------
> 1 files changed, 52 insertions(+), 19 deletions(-)
>
>diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts
>index 8f345de..8cf2c0c 100644
>--- a/arch/powerpc/boot/dts/katmai.dts
>+++ b/arch/powerpc/boot/dts/katmai.dts
>@@ -156,7 +156,7 @@
> compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
> #address-cells = <1>;
> #size-cells = <1>;
>- ranges = <0x00000000 0x00000004 0xe0000000 0x20000000>;
>+ ranges = <0xe0000000 0x00000004 0xe0000000 0x20000000>;
Could you explain why this was needed? It seems to shift the addresses of all
the rest of the devices under the OPB.
> clock-frequency = <0>; /* Filled in by zImage */
>
> EBC0: ebc {
>@@ -165,14 +165,47 @@
> #address-cells = <2>;
> #size-cells = <1>;
> clock-frequency = <0>; /* Filled in by zImage */
>+ /* ranges property is supplied by U-Boot */
That's probably true for newer U-Boot versions, but Katmai shipped with an old
version of U-Boot that wasn't FDT-aware. Wouldn't this break a new kernel
on the older boards that don't have an updated U-Boot since the ranges property
will be missing entirely there?
josh
^ permalink raw reply
* Re: [PATCH 2/2] powerpc/44x: Add MTD support to katmai defconfig
From: Josh Boyer @ 2010-01-26 15:05 UTC (permalink / raw)
To: Stefan Roese; +Cc: linuxppc-dev
In-Reply-To: <1264513820-16354-1-git-send-email-sr@denx.de>
On Tue, Jan 26, 2010 at 02:50:20PM +0100, Stefan Roese wrote:
>Signed-off-by: Stefan Roese <sr@denx.de>
>Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
I have an updated defconfig sitting in my 'merge' branch that Ben was supposed
to pull about 3 weeks ago. This will conflict with that. Do you think you
could regen the MTD adds off of that branch instead?
Ben, please pull those defconfig updates...
josh
>---
> arch/powerpc/configs/44x/katmai_defconfig | 339 +++++++++++++++++++++++------
> 1 files changed, 274 insertions(+), 65 deletions(-)
>
>diff --git a/arch/powerpc/configs/44x/katmai_defconfig b/arch/powerpc/configs/44x/katmai_defconfig
>index c23a4ef..af244e1 100644
>--- a/arch/powerpc/configs/44x/katmai_defconfig
>+++ b/arch/powerpc/configs/44x/katmai_defconfig
>@@ -1,14 +1,14 @@
> #
> # Automatically generated make config: don't edit
>-# Linux kernel version: 2.6.29-rc2
>-# Tue Jan 20 08:22:38 2009
>+# Linux kernel version: 2.6.33-rc5
>+# Tue Jan 26 14:40:58 2010
> #
> # CONFIG_PPC64 is not set
>
> #
> # Processor support
> #
>-# CONFIG_6xx is not set
>+# CONFIG_PPC_BOOK3S_32 is not set
> # CONFIG_PPC_85xx is not set
> # CONFIG_PPC_8xx is not set
> # CONFIG_40x is not set
>@@ -19,6 +19,7 @@ CONFIG_BOOKE=y
> CONFIG_PTE_64BIT=y
> CONFIG_PHYS_64BIT=y
> CONFIG_PPC_MMU_NOHASH=y
>+CONFIG_PPC_MMU_NOHASH_32=y
> # CONFIG_PPC_MM_SLICES is not set
> CONFIG_NOT_COHERENT_CACHE=y
> CONFIG_PPC32=y
>@@ -30,15 +31,18 @@ CONFIG_GENERIC_TIME=y
> CONFIG_GENERIC_TIME_VSYSCALL=y
> CONFIG_GENERIC_CLOCKEVENTS=y
> CONFIG_GENERIC_HARDIRQS=y
>+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
> # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
>+# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set
> CONFIG_IRQ_PER_CPU=y
>+CONFIG_NR_IRQS=512
> CONFIG_STACKTRACE_SUPPORT=y
> CONFIG_HAVE_LATENCYTOP_SUPPORT=y
>+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
> CONFIG_LOCKDEP_SUPPORT=y
> CONFIG_RWSEM_XCHGADD_ALGORITHM=y
> CONFIG_ARCH_HAS_ILOG2_U32=y
> CONFIG_GENERIC_HWEIGHT=y
>-CONFIG_GENERIC_CALIBRATE_DELAY=y
> CONFIG_GENERIC_FIND_NEXT_BIT=y
> # CONFIG_ARCH_NO_VIRT_TO_BUS is not set
> CONFIG_PPC=y
>@@ -52,11 +56,15 @@ CONFIG_PPC_UDBG_16550=y
> # CONFIG_GENERIC_TBSYNC is not set
> CONFIG_AUDIT_ARCH=y
> CONFIG_GENERIC_BUG=y
>+CONFIG_DTC=y
> # CONFIG_DEFAULT_UIMAGE is not set
>+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
> CONFIG_PPC_DCR_NATIVE=y
> # CONFIG_PPC_DCR_MMIO is not set
> CONFIG_PPC_DCR=y
>+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
> CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
>+CONFIG_CONSTRUCTORS=y
>
> #
> # General setup
>@@ -70,9 +78,21 @@ CONFIG_SWAP=y
> CONFIG_SYSVIPC=y
> CONFIG_SYSVIPC_SYSCTL=y
> CONFIG_POSIX_MQUEUE=y
>+CONFIG_POSIX_MQUEUE_SYSCTL=y
> # CONFIG_BSD_PROCESS_ACCT is not set
> # CONFIG_TASKSTATS is not set
> # CONFIG_AUDIT is not set
>+
>+#
>+# RCU Subsystem
>+#
>+CONFIG_TREE_RCU=y
>+# CONFIG_TREE_PREEMPT_RCU is not set
>+# CONFIG_TINY_RCU is not set
>+# CONFIG_RCU_TRACE is not set
>+CONFIG_RCU_FANOUT=32
>+# CONFIG_RCU_FANOUT_EXACT is not set
>+# CONFIG_TREE_RCU_TRACE is not set
> # CONFIG_IKCONFIG is not set
> CONFIG_LOG_BUF_SHIFT=14
> # CONFIG_GROUP_SCHED is not set
>@@ -83,8 +103,13 @@ CONFIG_SYSFS_DEPRECATED_V2=y
> # CONFIG_NAMESPACES is not set
> CONFIG_BLK_DEV_INITRD=y
> CONFIG_INITRAMFS_SOURCE=""
>+CONFIG_RD_GZIP=y
>+# CONFIG_RD_BZIP2 is not set
>+# CONFIG_RD_LZMA is not set
>+# CONFIG_RD_LZO is not set
> # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
> CONFIG_SYSCTL=y
>+CONFIG_ANON_INODES=y
> CONFIG_EMBEDDED=y
> CONFIG_SYSCTL_SYSCALL=y
> CONFIG_KALLSYMS=y
>@@ -94,19 +119,25 @@ CONFIG_HOTPLUG=y
> CONFIG_PRINTK=y
> CONFIG_BUG=y
> CONFIG_ELF_CORE=y
>-CONFIG_COMPAT_BRK=y
> CONFIG_BASE_FULL=y
> CONFIG_FUTEX=y
>-CONFIG_ANON_INODES=y
> CONFIG_EPOLL=y
> CONFIG_SIGNALFD=y
> CONFIG_TIMERFD=y
> CONFIG_EVENTFD=y
> CONFIG_SHMEM=y
> CONFIG_AIO=y
>+CONFIG_HAVE_PERF_EVENTS=y
>+
>+#
>+# Kernel Performance Events And Counters
>+#
>+# CONFIG_PERF_EVENTS is not set
>+# CONFIG_PERF_COUNTERS is not set
> CONFIG_VM_EVENT_COUNTERS=y
> CONFIG_PCI_QUIRKS=y
> CONFIG_SLUB_DEBUG=y
>+CONFIG_COMPAT_BRK=y
> # CONFIG_SLAB is not set
> CONFIG_SLUB=y
> # CONFIG_SLOB is not set
>@@ -118,6 +149,13 @@ CONFIG_HAVE_IOREMAP_PROT=y
> CONFIG_HAVE_KPROBES=y
> CONFIG_HAVE_KRETPROBES=y
> CONFIG_HAVE_ARCH_TRACEHOOK=y
>+CONFIG_HAVE_DMA_ATTRS=y
>+CONFIG_HAVE_DMA_API_DEBUG=y
>+
>+#
>+# GCOV-based kernel profiling
>+#
>+# CONFIG_SLOW_WORK is not set
> # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
> CONFIG_SLABINFO=y
> CONFIG_RT_MUTEXES=y
>@@ -129,8 +167,7 @@ CONFIG_MODULE_UNLOAD=y
> # CONFIG_MODVERSIONS is not set
> # CONFIG_MODULE_SRCVERSION_ALL is not set
> CONFIG_BLOCK=y
>-CONFIG_LBD=y
>-# CONFIG_BLK_DEV_IO_TRACE is not set
>+CONFIG_LBDAF=y
> # CONFIG_BLK_DEV_BSG is not set
> # CONFIG_BLK_DEV_INTEGRITY is not set
>
>@@ -138,19 +175,41 @@ CONFIG_LBD=y
> # IO Schedulers
> #
> CONFIG_IOSCHED_NOOP=y
>-CONFIG_IOSCHED_AS=y
> CONFIG_IOSCHED_DEADLINE=y
> CONFIG_IOSCHED_CFQ=y
>-CONFIG_DEFAULT_AS=y
> # CONFIG_DEFAULT_DEADLINE is not set
>-# CONFIG_DEFAULT_CFQ is not set
>+CONFIG_DEFAULT_CFQ=y
> # CONFIG_DEFAULT_NOOP is not set
>-CONFIG_DEFAULT_IOSCHED="anticipatory"
>-CONFIG_CLASSIC_RCU=y
>-# CONFIG_TREE_RCU is not set
>-# CONFIG_PREEMPT_RCU is not set
>-# CONFIG_TREE_RCU_TRACE is not set
>-# CONFIG_PREEMPT_RCU_TRACE is not set
>+CONFIG_DEFAULT_IOSCHED="cfq"
>+# CONFIG_INLINE_SPIN_TRYLOCK is not set
>+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
>+# CONFIG_INLINE_SPIN_LOCK is not set
>+# CONFIG_INLINE_SPIN_LOCK_BH is not set
>+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
>+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
>+CONFIG_INLINE_SPIN_UNLOCK=y
>+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
>+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
>+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
>+# CONFIG_INLINE_READ_TRYLOCK is not set
>+# CONFIG_INLINE_READ_LOCK is not set
>+# CONFIG_INLINE_READ_LOCK_BH is not set
>+# CONFIG_INLINE_READ_LOCK_IRQ is not set
>+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
>+CONFIG_INLINE_READ_UNLOCK=y
>+# CONFIG_INLINE_READ_UNLOCK_BH is not set
>+CONFIG_INLINE_READ_UNLOCK_IRQ=y
>+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
>+# CONFIG_INLINE_WRITE_TRYLOCK is not set
>+# CONFIG_INLINE_WRITE_LOCK is not set
>+# CONFIG_INLINE_WRITE_LOCK_BH is not set
>+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
>+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
>+CONFIG_INLINE_WRITE_UNLOCK=y
>+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
>+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
>+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
>+# CONFIG_MUTEX_SPIN_ON_OWNER is not set
> # CONFIG_FREEZER is not set
> CONFIG_PPC4xx_PCI_EXPRESS=y
>
>@@ -171,6 +230,8 @@ CONFIG_KATMAI=y
> # CONFIG_ARCHES is not set
> # CONFIG_CANYONLANDS is not set
> # CONFIG_GLACIER is not set
>+# CONFIG_REDWOOD is not set
>+# CONFIG_EIGER is not set
> # CONFIG_YOSEMITE is not set
> # CONFIG_XILINX_VIRTEX440_GENERIC_BOARD is not set
> CONFIG_PPC44x_SIMPLE=y
>@@ -212,10 +273,12 @@ CONFIG_BINFMT_ELF=y
> # CONFIG_BINFMT_MISC is not set
> # CONFIG_MATH_EMULATION is not set
> # CONFIG_IOMMU_HELPER is not set
>-CONFIG_PPC_NEED_DMA_SYNC_OPS=y
>+# CONFIG_SWIOTLB is not set
> CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
> CONFIG_ARCH_HAS_WALK_MEMORY=y
> CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
>+CONFIG_SPARSE_IRQ=y
>+CONFIG_MAX_ACTIVE_REGIONS=32
> CONFIG_ARCH_FLATMEM_ENABLE=y
> CONFIG_ARCH_POPULATES_NODE_MAP=y
> CONFIG_SELECT_MEMORY_MODEL=y
>@@ -231,10 +294,13 @@ CONFIG_PHYS_ADDR_T_64BIT=y
> CONFIG_ZONE_DMA_FLAG=1
> CONFIG_BOUNCE=y
> CONFIG_VIRT_TO_BUS=y
>-CONFIG_UNEVICTABLE_LRU=y
>+# CONFIG_KSM is not set
>+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
>+CONFIG_STDBINUTILS=y
> CONFIG_PPC_4K_PAGES=y
> # CONFIG_PPC_16K_PAGES is not set
> # CONFIG_PPC_64K_PAGES is not set
>+# CONFIG_PPC_256K_PAGES is not set
> CONFIG_FORCE_MAX_ZONEORDER=11
> CONFIG_PROC_DEVICETREE=y
> CONFIG_CMDLINE_BOOL=y
>@@ -259,6 +325,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
> # CONFIG_PCI_LEGACY is not set
> # CONFIG_PCI_DEBUG is not set
> # CONFIG_PCI_STUB is not set
>+# CONFIG_PCI_IOV is not set
> # CONFIG_PCCARD is not set
> # CONFIG_HOTPLUG_PCI is not set
> # CONFIG_HAS_RAPIDIO is not set
>@@ -276,14 +343,12 @@ CONFIG_PAGE_OFFSET=0xc0000000
> CONFIG_KERNEL_START=0xc0000000
> CONFIG_PHYSICAL_START=0x00000000
> CONFIG_TASK_SIZE=0xc0000000
>-CONFIG_CONSISTENT_START=0xff100000
> CONFIG_CONSISTENT_SIZE=0x00200000
> CONFIG_NET=y
>
> #
> # Networking options
> #
>-CONFIG_COMPAT_NET_DEV_OPS=y
> CONFIG_PACKET=y
> # CONFIG_PACKET_MMAP is not set
> CONFIG_UNIX=y
>@@ -320,6 +385,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
> # CONFIG_NETFILTER is not set
> # CONFIG_IP_DCCP is not set
> # CONFIG_IP_SCTP is not set
>+# CONFIG_RDS is not set
> # CONFIG_TIPC is not set
> # CONFIG_ATM is not set
> # CONFIG_BRIDGE is not set
>@@ -333,6 +399,8 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
> # CONFIG_LAPB is not set
> # CONFIG_ECONET is not set
> # CONFIG_WAN_ROUTER is not set
>+# CONFIG_PHONET is not set
>+# CONFIG_IEEE802154 is not set
> # CONFIG_NET_SCHED is not set
> # CONFIG_DCB is not set
>
>@@ -345,8 +413,13 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
> # CONFIG_IRDA is not set
> # CONFIG_BT is not set
> # CONFIG_AF_RXRPC is not set
>-# CONFIG_PHONET is not set
>-# CONFIG_WIRELESS is not set
>+CONFIG_WIRELESS=y
>+# CONFIG_CFG80211 is not set
>+# CONFIG_LIB80211 is not set
>+
>+#
>+# CFG80211 needs to be enabled for MAC80211
>+#
> # CONFIG_WIMAX is not set
> # CONFIG_RFKILL is not set
> # CONFIG_NET_9P is not set
>@@ -359,6 +432,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
> # Generic Driver Options
> #
> CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
>+# CONFIG_DEVTMPFS is not set
> CONFIG_STANDALONE=y
> CONFIG_PREVENT_FIRMWARE_BUILD=y
> CONFIG_FW_LOADER=y
>@@ -369,7 +443,90 @@ CONFIG_EXTRA_FIRMWARE=""
> # CONFIG_SYS_HYPERVISOR is not set
> CONFIG_CONNECTOR=y
> CONFIG_PROC_EVENTS=y
>-# CONFIG_MTD is not set
>+CONFIG_MTD=y
>+# CONFIG_MTD_DEBUG is not set
>+# CONFIG_MTD_TESTS is not set
>+# CONFIG_MTD_CONCAT is not set
>+CONFIG_MTD_PARTITIONS=y
>+# CONFIG_MTD_REDBOOT_PARTS is not set
>+CONFIG_MTD_CMDLINE_PARTS=y
>+CONFIG_MTD_OF_PARTS=y
>+# CONFIG_MTD_AR7_PARTS is not set
>+
>+#
>+# User Modules And Translation Layers
>+#
>+CONFIG_MTD_CHAR=y
>+CONFIG_MTD_BLKDEVS=y
>+CONFIG_MTD_BLOCK=y
>+# CONFIG_FTL is not set
>+# CONFIG_NFTL is not set
>+# CONFIG_INFTL is not set
>+# CONFIG_RFD_FTL is not set
>+# CONFIG_SSFDC is not set
>+# CONFIG_MTD_OOPS is not set
>+
>+#
>+# RAM/ROM/Flash chip drivers
>+#
>+CONFIG_MTD_CFI=y
>+# CONFIG_MTD_JEDECPROBE is not set
>+CONFIG_MTD_GEN_PROBE=y
>+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
>+CONFIG_MTD_MAP_BANK_WIDTH_1=y
>+CONFIG_MTD_MAP_BANK_WIDTH_2=y
>+CONFIG_MTD_MAP_BANK_WIDTH_4=y
>+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
>+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
>+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
>+CONFIG_MTD_CFI_I1=y
>+CONFIG_MTD_CFI_I2=y
>+# CONFIG_MTD_CFI_I4 is not set
>+# CONFIG_MTD_CFI_I8 is not set
>+# CONFIG_MTD_CFI_INTELEXT is not set
>+CONFIG_MTD_CFI_AMDSTD=y
>+# CONFIG_MTD_CFI_STAA is not set
>+CONFIG_MTD_CFI_UTIL=y
>+# CONFIG_MTD_RAM is not set
>+# CONFIG_MTD_ROM is not set
>+# CONFIG_MTD_ABSENT is not set
>+
>+#
>+# Mapping drivers for chip access
>+#
>+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
>+# CONFIG_MTD_PHYSMAP is not set
>+CONFIG_MTD_PHYSMAP_OF=y
>+# CONFIG_MTD_INTEL_VR_NOR is not set
>+# CONFIG_MTD_PLATRAM is not set
>+
>+#
>+# Self-contained MTD device drivers
>+#
>+# CONFIG_MTD_PMC551 is not set
>+# CONFIG_MTD_SLRAM is not set
>+# CONFIG_MTD_PHRAM is not set
>+# CONFIG_MTD_MTDRAM is not set
>+# CONFIG_MTD_BLOCK2MTD is not set
>+
>+#
>+# Disk-On-Chip Device Drivers
>+#
>+# CONFIG_MTD_DOC2000 is not set
>+# CONFIG_MTD_DOC2001 is not set
>+# CONFIG_MTD_DOC2001PLUS is not set
>+# CONFIG_MTD_NAND is not set
>+# CONFIG_MTD_ONENAND is not set
>+
>+#
>+# LPDDR flash memory drivers
>+#
>+# CONFIG_MTD_LPDDR is not set
>+
>+#
>+# UBI - Unsorted block images
>+#
>+# CONFIG_MTD_UBI is not set
> CONFIG_OF_DEVICE=y
> # CONFIG_PARPORT is not set
> CONFIG_BLK_DEV=y
>@@ -380,6 +537,7 @@ CONFIG_BLK_DEV=y
> # CONFIG_BLK_DEV_UMEM is not set
> # CONFIG_BLK_DEV_COW_COMMON is not set
> # CONFIG_BLK_DEV_LOOP is not set
>+# CONFIG_BLK_DEV_DRBD is not set
> # CONFIG_BLK_DEV_NBD is not set
> # CONFIG_BLK_DEV_SX8 is not set
> CONFIG_BLK_DEV_RAM=y
>@@ -392,12 +550,17 @@ CONFIG_BLK_DEV_RAM_SIZE=35000
> # CONFIG_BLK_DEV_HD is not set
> CONFIG_MISC_DEVICES=y
> # CONFIG_PHANTOM is not set
>-# CONFIG_EEPROM_93CX6 is not set
> # CONFIG_SGI_IOC4 is not set
> # CONFIG_TIFM_CORE is not set
> # CONFIG_ENCLOSURE_SERVICES is not set
> # CONFIG_HP_ILO is not set
> # CONFIG_C2PORT is not set
>+
>+#
>+# EEPROM support
>+#
>+# CONFIG_EEPROM_93CX6 is not set
>+# CONFIG_CB710_CORE is not set
> CONFIG_HAVE_IDE=y
> # CONFIG_IDE is not set
>
>@@ -417,7 +580,11 @@ CONFIG_HAVE_IDE=y
> #
>
> #
>-# Enable only one of the two stacks, unless you know what you are doing
>+# You can enable one or both FireWire driver stacks.
>+#
>+
>+#
>+# The newer stack is recommended.
> #
> # CONFIG_FIREWIRE is not set
> # CONFIG_IEEE1394 is not set
>@@ -440,6 +607,8 @@ CONFIG_NET_ETHERNET=y
> # CONFIG_SUNGEM is not set
> # CONFIG_CASSINI is not set
> # CONFIG_NET_VENDOR_3COM is not set
>+# CONFIG_ETHOC is not set
>+# CONFIG_DNET is not set
> # CONFIG_NET_TULIP is not set
> # CONFIG_HP100 is not set
> CONFIG_IBM_NEW_EMAC=y
>@@ -458,7 +627,10 @@ CONFIG_IBM_NEW_EMAC_EMAC4=y
> # CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
> # CONFIG_NET_PCI is not set
> # CONFIG_B44 is not set
>+# CONFIG_KS8842 is not set
>+# CONFIG_KS8851_MLL is not set
> # CONFIG_ATL2 is not set
>+# CONFIG_XILINX_EMACLITE is not set
> CONFIG_NETDEV_1000=y
> # CONFIG_ACENIC is not set
> # CONFIG_DL2K is not set
>@@ -466,6 +638,7 @@ CONFIG_NETDEV_1000=y
> # CONFIG_E1000E is not set
> # CONFIG_IP1000 is not set
> # CONFIG_IGB is not set
>+# CONFIG_IGBVF is not set
> # CONFIG_NS83820 is not set
> # CONFIG_HAMACHI is not set
> # CONFIG_YELLOWFIN is not set
>@@ -476,9 +649,13 @@ CONFIG_NETDEV_1000=y
> # CONFIG_VIA_VELOCITY is not set
> # CONFIG_TIGON3 is not set
> # CONFIG_BNX2 is not set
>+# CONFIG_CNIC is not set
>+# CONFIG_MV643XX_ETH is not set
>+# CONFIG_XILINX_LL_TEMAC is not set
> # CONFIG_QLA3XXX is not set
> # CONFIG_ATL1 is not set
> # CONFIG_ATL1E is not set
>+# CONFIG_ATL1C is not set
> # CONFIG_JME is not set
> CONFIG_NETDEV_10000=y
> # CONFIG_CHELSIO_T1 is not set
>@@ -488,6 +665,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
> # CONFIG_IXGBE is not set
> # CONFIG_IXGB is not set
> # CONFIG_S2IO is not set
>+# CONFIG_VXGE is not set
> # CONFIG_MYRI10GE is not set
> # CONFIG_NETXEN_NIC is not set
> # CONFIG_NIU is not set
>@@ -497,14 +675,13 @@ CONFIG_CHELSIO_T3_DEPENDS=y
> # CONFIG_BNX2X is not set
> # CONFIG_QLGE is not set
> # CONFIG_SFC is not set
>+# CONFIG_BE2NET is not set
> # CONFIG_TR is not set
>-
>-#
>-# Wireless LAN
>-#
>-# CONFIG_WLAN_PRE80211 is not set
>-# CONFIG_WLAN_80211 is not set
>-# CONFIG_IWLWIFI_LEDS is not set
>+CONFIG_WLAN=y
>+# CONFIG_AIRO is not set
>+# CONFIG_ATMEL is not set
>+# CONFIG_PRISM54 is not set
>+# CONFIG_HOSTAP is not set
>
> #
> # Enable WiMAX (Networking options) to see the WiMAX drivers
>@@ -517,6 +694,7 @@ CONFIG_CHELSIO_T3_DEPENDS=y
> # CONFIG_NETCONSOLE is not set
> # CONFIG_NETPOLL is not set
> # CONFIG_NET_POLL_CONTROLLER is not set
>+# CONFIG_VMXNET3 is not set
> # CONFIG_ISDN is not set
> # CONFIG_PHONE is not set
>
>@@ -562,6 +740,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
> # CONFIG_SERIAL_JSM is not set
> CONFIG_SERIAL_OF_PLATFORM=y
> # CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
>+# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set
> CONFIG_UNIX98_PTYS=y
> # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
> CONFIG_LEGACY_PTYS=y
>@@ -578,13 +757,17 @@ CONFIG_LEGACY_PTY_COUNT=256
> CONFIG_DEVPORT=y
> # CONFIG_I2C is not set
> # CONFIG_SPI is not set
>+
>+#
>+# PPS support
>+#
>+# CONFIG_PPS is not set
> CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
> # CONFIG_GPIOLIB is not set
> # CONFIG_W1 is not set
> # CONFIG_POWER_SUPPLY is not set
> # CONFIG_HWMON is not set
> # CONFIG_THERMAL is not set
>-# CONFIG_THERMAL_HWMON is not set
> # CONFIG_WATCHDOG is not set
> CONFIG_SSB_POSSIBLE=y
>
>@@ -601,27 +784,13 @@ CONFIG_SSB_POSSIBLE=y
> # CONFIG_HTC_PASIC3 is not set
> # CONFIG_MFD_TMIO is not set
> # CONFIG_REGULATOR is not set
>-
>-#
>-# Multimedia devices
>-#
>-
>-#
>-# Multimedia core support
>-#
>-# CONFIG_VIDEO_DEV is not set
>-# CONFIG_DVB_CORE is not set
>-# CONFIG_VIDEO_MEDIA is not set
>-
>-#
>-# Multimedia drivers
>-#
>-CONFIG_DAB=y
>+# CONFIG_MEDIA_SUPPORT is not set
>
> #
> # Graphics support
> #
> # CONFIG_AGP is not set
>+CONFIG_VGA_ARB=y
> # CONFIG_DRM is not set
> # CONFIG_VGASTATE is not set
> CONFIG_VIDEO_OUTPUT_CONTROL=m
>@@ -646,7 +815,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
> #
>
> #
>-# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
>+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
> #
> # CONFIG_USB_GADGET is not set
>
>@@ -662,7 +831,12 @@ CONFIG_USB_ARCH_HAS_EHCI=y
> # CONFIG_EDAC is not set
> # CONFIG_RTC_CLASS is not set
> # CONFIG_DMADEVICES is not set
>+# CONFIG_AUXDISPLAY is not set
> # CONFIG_UIO is not set
>+
>+#
>+# TI VLYNQ
>+#
> # CONFIG_STAGING is not set
>
> #
>@@ -676,11 +850,13 @@ CONFIG_EXT2_FS=y
> # CONFIG_REISERFS_FS is not set
> # CONFIG_JFS_FS is not set
> # CONFIG_FS_POSIX_ACL is not set
>-CONFIG_FILE_LOCKING=y
> # CONFIG_XFS_FS is not set
> # CONFIG_GFS2_FS is not set
> # CONFIG_OCFS2_FS is not set
> # CONFIG_BTRFS_FS is not set
>+# CONFIG_NILFS2_FS is not set
>+CONFIG_FILE_LOCKING=y
>+CONFIG_FSNOTIFY=y
> CONFIG_DNOTIFY=y
> CONFIG_INOTIFY=y
> CONFIG_INOTIFY_USER=y
>@@ -690,6 +866,11 @@ CONFIG_INOTIFY_USER=y
> # CONFIG_FUSE_FS is not set
>
> #
>+# Caches
>+#
>+# CONFIG_FSCACHE is not set
>+
>+#
> # CD-ROM/DVD Filesystems
> #
> # CONFIG_ISO9660_FS is not set
>@@ -722,6 +903,7 @@ CONFIG_MISC_FILESYSTEMS=y
> # CONFIG_BEFS_FS is not set
> # CONFIG_BFS_FS is not set
> # CONFIG_EFS_FS is not set
>+# CONFIG_JFFS2_FS is not set
> CONFIG_CRAMFS=y
> # CONFIG_SQUASHFS is not set
> # CONFIG_VXFS_FS is not set
>@@ -743,7 +925,6 @@ CONFIG_LOCKD=y
> CONFIG_LOCKD_V4=y
> CONFIG_NFS_COMMON=y
> CONFIG_SUNRPC=y
>-# CONFIG_SUNRPC_REGISTER_V4 is not set
> # CONFIG_RPCSEC_GSS_KRB5 is not set
> # CONFIG_RPCSEC_GSS_SPKM3 is not set
> # CONFIG_SMB_FS is not set
>@@ -759,6 +940,7 @@ CONFIG_SUNRPC=y
> CONFIG_MSDOS_PARTITION=y
> # CONFIG_NLS is not set
> # CONFIG_DLM is not set
>+# CONFIG_BINARY_PRINTF is not set
>
> #
> # Library routines
>@@ -773,11 +955,13 @@ CONFIG_CRC32=y
> # CONFIG_CRC7 is not set
> # CONFIG_LIBCRC32C is not set
> CONFIG_ZLIB_INFLATE=y
>-CONFIG_PLIST=y
>+CONFIG_DECOMPRESS_GZIP=y
> CONFIG_HAS_IOMEM=y
> CONFIG_HAS_IOPORT=y
> CONFIG_HAS_DMA=y
> CONFIG_HAVE_LMB=y
>+CONFIG_NLATTR=y
>+CONFIG_GENERIC_ATOMIC64=y
>
> #
> # Kernel hacking
>@@ -787,6 +971,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
> CONFIG_ENABLE_MUST_CHECK=y
> CONFIG_FRAME_WARN=1024
> CONFIG_MAGIC_SYSRQ=y
>+# CONFIG_STRIP_ASM_SYMS is not set
> # CONFIG_UNUSED_SYMBOLS is not set
> # CONFIG_DEBUG_FS is not set
> # CONFIG_HEADERS_CHECK is not set
>@@ -795,16 +980,23 @@ CONFIG_DEBUG_KERNEL=y
> CONFIG_DETECT_SOFTLOCKUP=y
> # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
> CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
>+CONFIG_DETECT_HUNG_TASK=y
>+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
>+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
> CONFIG_SCHED_DEBUG=y
> # CONFIG_SCHEDSTATS is not set
> # CONFIG_TIMER_STATS is not set
> # CONFIG_DEBUG_OBJECTS is not set
> # CONFIG_SLUB_DEBUG_ON is not set
> # CONFIG_SLUB_STATS is not set
>+# CONFIG_DEBUG_KMEMLEAK is not set
> # CONFIG_DEBUG_RT_MUTEXES is not set
> # CONFIG_RT_MUTEX_TESTER is not set
> # CONFIG_DEBUG_SPINLOCK is not set
> # CONFIG_DEBUG_MUTEXES is not set
>+# CONFIG_DEBUG_LOCK_ALLOC is not set
>+# CONFIG_PROVE_LOCKING is not set
>+# CONFIG_LOCK_STAT is not set
> # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
> # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
> # CONFIG_DEBUG_KOBJECT is not set
>@@ -816,35 +1008,43 @@ CONFIG_SCHED_DEBUG=y
> # CONFIG_DEBUG_LIST is not set
> # CONFIG_DEBUG_SG is not set
> # CONFIG_DEBUG_NOTIFIERS is not set
>-# CONFIG_BOOT_PRINTK_DELAY is not set
>+# CONFIG_DEBUG_CREDENTIALS is not set
> # CONFIG_RCU_TORTURE_TEST is not set
> # CONFIG_RCU_CPU_STALL_DETECTOR is not set
> # CONFIG_BACKTRACE_SELF_TEST is not set
> # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
>+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
> # CONFIG_FAULT_INJECTION is not set
> # CONFIG_LATENCYTOP is not set
> CONFIG_SYSCTL_SYSCALL_CHECK=y
>+# CONFIG_DEBUG_PAGEALLOC is not set
> CONFIG_HAVE_FUNCTION_TRACER=y
>+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
> CONFIG_HAVE_DYNAMIC_FTRACE=y
> CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
>-
>-#
>-# Tracers
>-#
>+CONFIG_TRACING_SUPPORT=y
>+CONFIG_FTRACE=y
> # CONFIG_FUNCTION_TRACER is not set
>+# CONFIG_IRQSOFF_TRACER is not set
> # CONFIG_SCHED_TRACER is not set
>-# CONFIG_CONTEXT_SWITCH_TRACER is not set
>+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
> # CONFIG_BOOT_TRACER is not set
>-# CONFIG_TRACE_BRANCH_PROFILING is not set
>+CONFIG_BRANCH_PROFILE_NONE=y
>+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
>+# CONFIG_PROFILE_ALL_BRANCHES is not set
> # CONFIG_STACK_TRACER is not set
>-# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
>+# CONFIG_KMEMTRACE is not set
>+# CONFIG_WORKQUEUE_TRACER is not set
>+# CONFIG_BLK_DEV_IO_TRACE is not set
>+# CONFIG_DMA_API_DEBUG is not set
> # CONFIG_SAMPLES is not set
> CONFIG_HAVE_ARCH_KGDB=y
> # CONFIG_KGDB is not set
>+# CONFIG_PPC_DISABLE_WERROR is not set
>+CONFIG_PPC_WERROR=y
> CONFIG_PRINT_STACK_DEPTH=64
> # CONFIG_DEBUG_STACKOVERFLOW is not set
> # CONFIG_DEBUG_STACK_USAGE is not set
>-# CONFIG_DEBUG_PAGEALLOC is not set
> # CONFIG_CODE_PATCHING_SELFTEST is not set
> # CONFIG_FTR_FIXUP_SELFTEST is not set
> # CONFIG_MSI_BITMAP_SELFTEST is not set
>@@ -859,13 +1059,16 @@ CONFIG_PRINT_STACK_DEPTH=64
> # CONFIG_KEYS is not set
> # CONFIG_SECURITY is not set
> # CONFIG_SECURITYFS is not set
>-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
>+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
>+# CONFIG_DEFAULT_SECURITY_SMACK is not set
>+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
>+CONFIG_DEFAULT_SECURITY_DAC=y
>+CONFIG_DEFAULT_SECURITY=""
> CONFIG_CRYPTO=y
>
> #
> # Crypto core or helper
> #
>-# CONFIG_CRYPTO_FIPS is not set
> CONFIG_CRYPTO_ALGAPI=y
> CONFIG_CRYPTO_ALGAPI2=y
> CONFIG_CRYPTO_AEAD2=y
>@@ -874,10 +1077,12 @@ CONFIG_CRYPTO_BLKCIPHER2=y
> CONFIG_CRYPTO_HASH=y
> CONFIG_CRYPTO_HASH2=y
> CONFIG_CRYPTO_RNG2=y
>+CONFIG_CRYPTO_PCOMP=y
> CONFIG_CRYPTO_MANAGER=y
> CONFIG_CRYPTO_MANAGER2=y
> # CONFIG_CRYPTO_GF128MUL is not set
> # CONFIG_CRYPTO_NULL is not set
>+CONFIG_CRYPTO_WORKQUEUE=y
> # CONFIG_CRYPTO_CRYPTD is not set
> # CONFIG_CRYPTO_AUTHENC is not set
> # CONFIG_CRYPTO_TEST is not set
>@@ -905,11 +1110,13 @@ CONFIG_CRYPTO_PCBC=y
> #
> # CONFIG_CRYPTO_HMAC is not set
> # CONFIG_CRYPTO_XCBC is not set
>+# CONFIG_CRYPTO_VMAC is not set
>
> #
> # Digest
> #
> # CONFIG_CRYPTO_CRC32C is not set
>+# CONFIG_CRYPTO_GHASH is not set
> # CONFIG_CRYPTO_MD4 is not set
> CONFIG_CRYPTO_MD5=y
> # CONFIG_CRYPTO_MICHAEL_MIC is not set
>@@ -946,6 +1153,7 @@ CONFIG_CRYPTO_DES=y
> # Compression
> #
> # CONFIG_CRYPTO_DEFLATE is not set
>+# CONFIG_CRYPTO_ZLIB is not set
> # CONFIG_CRYPTO_LZO is not set
>
> #
>@@ -954,5 +1162,6 @@ CONFIG_CRYPTO_DES=y
> # CONFIG_CRYPTO_ANSI_CPRNG is not set
> CONFIG_CRYPTO_HW=y
> # CONFIG_CRYPTO_DEV_HIFN_795X is not set
>+# CONFIG_CRYPTO_DEV_PPC4XX is not set
> # CONFIG_PPC_CLOCK is not set
> # CONFIG_VIRTUALIZATION is not set
>--
>1.6.6.1
>
^ permalink raw reply
* Re: [PATCH 2/2] powerpc/44x: Add MTD support to katmai defconfig
From: Stefan Roese @ 2010-01-26 15:28 UTC (permalink / raw)
To: Josh Boyer; +Cc: linuxppc-dev
In-Reply-To: <20100126150526.GR7484@zod.rchland.ibm.com>
On Tuesday 26 January 2010 16:05:26 Josh Boyer wrote:
> On Tue, Jan 26, 2010 at 02:50:20PM +0100, Stefan Roese wrote:
> >Signed-off-by: Stefan Roese <sr@denx.de>
> >Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
>
> I have an updated defconfig sitting in my 'merge' branch that Ben was
> supposed to pull about 3 weeks ago. This will conflict with that. Do you
> think you could regen the MTD adds off of that branch instead?
Sure. Will send a new version later.
Cheers,
Stefan
^ permalink raw reply
* Re: [PATCH 1/2] powerpc/44x: Add MTD support (NOR FLASH) to Katmai dts
From: Stefan Roese @ 2010-01-26 15:31 UTC (permalink / raw)
To: Josh Boyer; +Cc: linuxppc-dev
In-Reply-To: <20100126150403.GQ7484@zod.rchland.ibm.com>
On Tuesday 26 January 2010 16:04:03 Josh Boyer wrote:
> On Tue, Jan 26, 2010 at 02:50:07PM +0100, Stefan Roese wrote:
> >This patch adds NOR FLASH MTD support to the Katmai (440SPe) dts file.
> >
> >Additionally with a small whitespace cleanup.
> >
> >Signed-off-by: Stefan Roese <sr@denx.de>
> >Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
> >---
> > arch/powerpc/boot/dts/katmai.dts | 71
> > +++++++++++++++++++++++++++---------- 1 files changed, 52 insertions(+),
> > 19 deletions(-)
> >
> >diff --git a/arch/powerpc/boot/dts/katmai.dts
> > b/arch/powerpc/boot/dts/katmai.dts index 8f345de..8cf2c0c 100644
> >--- a/arch/powerpc/boot/dts/katmai.dts
> >+++ b/arch/powerpc/boot/dts/katmai.dts
> >@@ -156,7 +156,7 @@
> > compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
> > #address-cells = <1>;
> > #size-cells = <1>;
> >- ranges = <0x00000000 0x00000004 0xe0000000 0x20000000>;
> >+ ranges = <0xe0000000 0x00000004 0xe0000000 0x20000000>;
>
> Could you explain why this was needed? It seems to shift the addresses of
> all the rest of the devices under the OPB.
Yes. This is needed to being able to map the EBC ranges (physical addresses of
each chip-select) correctly.
I'll update the commit text to explain this change a bit.
> > clock-frequency = <0>; /* Filled in by zImage */
> >
> > EBC0: ebc {
> >@@ -165,14 +165,47 @@
> > #address-cells = <2>;
> > #size-cells = <1>;
> > clock-frequency = <0>; /* Filled in by zImage */
> >+ /* ranges property is supplied by U-Boot */
>
> That's probably true for newer U-Boot versions, but Katmai shipped with an
> old version of U-Boot that wasn't FDT-aware. Wouldn't this break a new
> kernel on the older boards that don't have an updated U-Boot since the
> ranges property will be missing entirely there?
When the ranges property is missing in this EBC node, the NOR FLASH mapping
will not work. So not MTD devices. But it won't break anything.
Cheers,
Stefan
^ permalink raw reply
* [PATCH v2] powerpc/44x: Add MTD support to katmai defconfig
From: Stefan Roese @ 2010-01-26 15:53 UTC (permalink / raw)
To: linuxppc-dev
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
---
v2: - Rebased against Josh's "merge" branch
arch/powerpc/configs/44x/katmai_defconfig | 94 +++++++++++++++++++++++++++--
1 files changed, 89 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/configs/44x/katmai_defconfig b/arch/powerpc/configs/44x/katmai_defconfig
index dec901f..af244e1 100644
--- a/arch/powerpc/configs/44x/katmai_defconfig
+++ b/arch/powerpc/configs/44x/katmai_defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.33-rc1
-# Mon Jan 4 14:55:34 2010
+# Linux kernel version: 2.6.33-rc5
+# Tue Jan 26 14:40:58 2010
#
# CONFIG_PPC64 is not set
@@ -106,6 +106,7 @@ CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
+# CONFIG_RD_LZO is not set
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
@@ -442,7 +443,90 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_SYS_HYPERVISOR is not set
CONFIG_CONNECTOR=y
CONFIG_PROC_EVENTS=y
-# CONFIG_MTD is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_PHYSMAP_OF=y
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
CONFIG_OF_DEVICE=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
@@ -500,7 +584,7 @@ CONFIG_HAVE_IDE=y
#
#
-# See the help texts for more information.
+# The newer stack is recommended.
#
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set
@@ -763,7 +847,6 @@ CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
# CONFIG_EXT4_FS is not set
-CONFIG_EXT4_USE_FOR_EXT23=y
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
@@ -820,6 +903,7 @@ CONFIG_MISC_FILESYSTEMS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=y
# CONFIG_SQUASHFS is not set
# CONFIG_VXFS_FS is not set
--
1.6.6.1
^ permalink raw reply related
* [PATCH v2] powerpc/44x: Add MTD support (NOR FLASH) to Katmai dts
From: Stefan Roese @ 2010-01-26 15:56 UTC (permalink / raw)
To: linuxppc-dev
This patch adds NOR FLASH MTD support to the Katmai (440SPe) dts file.
For this the OPB ranges address is mapped differently (base 0x00000000
-> 0xe0000000). This results in the address being identical to the lower
32bit of its physical address. This is needed for the MTD mapping to work
correctly, since U-Boot will insert the physical addresses of the EBC
chip selects into the EBC ranges property. This is the way its done in
most other 4xx dts files as well.
Additionally with a small whitespace cleanup.
Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Josh Boyer <jwboyer@linux.vnet.ibm.com>
---
v2: - Extended commit text a bit as suggested by Josh
arch/powerpc/boot/dts/katmai.dts | 71 +++++++++++++++++++++++++++----------
1 files changed, 52 insertions(+), 19 deletions(-)
diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts
index 8f345de..8cf2c0c 100644
--- a/arch/powerpc/boot/dts/katmai.dts
+++ b/arch/powerpc/boot/dts/katmai.dts
@@ -156,7 +156,7 @@
compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
#address-cells = <1>;
#size-cells = <1>;
- ranges = <0x00000000 0x00000004 0xe0000000 0x20000000>;
+ ranges = <0xe0000000 0x00000004 0xe0000000 0x20000000>;
clock-frequency = <0>; /* Filled in by zImage */
EBC0: ebc {
@@ -165,14 +165,47 @@
#address-cells = <2>;
#size-cells = <1>;
clock-frequency = <0>; /* Filled in by zImage */
+ /* ranges property is supplied by U-Boot */
interrupts = <0x5 0x1>;
interrupt-parent = <&UIC1>;
+
+ nor_flash@0,0 {
+ compatible = "cfi-flash";
+ bank-width = <2>;
+ reg = <0x00000000 0x00000000 0x01000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ partition@0 {
+ label = "kernel";
+ reg = <0x00000000 0x001e0000>;
+ };
+ partition@1e0000 {
+ label = "dtb";
+ reg = <0x001e0000 0x00020000>;
+ };
+ partition@200000 {
+ label = "root";
+ reg = <0x00200000 0x00200000>;
+ };
+ partition@400000 {
+ label = "user";
+ reg = <0x00400000 0x00b60000>;
+ };
+ partition@f60000 {
+ label = "env";
+ reg = <0x00f60000 0x00040000>;
+ };
+ partition@fa0000 {
+ label = "u-boot";
+ reg = <0x00fa0000 0x00060000>;
+ };
+ };
};
- UART0: serial@10000200 {
+ UART0: serial@f0000200 {
device_type = "serial";
compatible = "ns16550";
- reg = <0x10000200 0x00000008>;
+ reg = <0xf0000200 0x00000008>;
virtual-reg = <0xa0000200>;
clock-frequency = <0>; /* Filled in by zImage */
current-speed = <115200>;
@@ -180,10 +213,10 @@
interrupts = <0x0 0x4>;
};
- UART1: serial@10000300 {
+ UART1: serial@f0000300 {
device_type = "serial";
compatible = "ns16550";
- reg = <0x10000300 0x00000008>;
+ reg = <0xf0000300 0x00000008>;
virtual-reg = <0xa0000300>;
clock-frequency = <0>;
current-speed = <0>;
@@ -192,10 +225,10 @@
};
- UART2: serial@10000600 {
+ UART2: serial@f0000600 {
device_type = "serial";
compatible = "ns16550";
- reg = <0x10000600 0x00000008>;
+ reg = <0xf0000600 0x00000008>;
virtual-reg = <0xa0000600>;
clock-frequency = <0>;
current-speed = <0>;
@@ -203,27 +236,27 @@
interrupts = <0x5 0x4>;
};
- IIC0: i2c@10000400 {
+ IIC0: i2c@f0000400 {
compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
- reg = <0x10000400 0x00000014>;
+ reg = <0xf0000400 0x00000014>;
interrupt-parent = <&UIC0>;
interrupts = <0x2 0x4>;
};
- IIC1: i2c@10000500 {
+ IIC1: i2c@f0000500 {
compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
- reg = <0x10000500 0x00000014>;
+ reg = <0xf0000500 0x00000014>;
interrupt-parent = <&UIC0>;
interrupts = <0x3 0x4>;
};
- EMAC0: ethernet@10000800 {
+ EMAC0: ethernet@f0000800 {
linux,network-index = <0x0>;
device_type = "network";
compatible = "ibm,emac-440spe", "ibm,emac4";
interrupt-parent = <&UIC1>;
interrupts = <0x1c 0x4 0x1d 0x4>;
- reg = <0x10000800 0x00000074>;
+ reg = <0xf0000800 0x00000074>;
local-mac-address = [000000000000];
mal-device = <&MAL0>;
mal-tx-channel = <0>;
@@ -248,11 +281,11 @@
primary;
large-inbound-windows;
enable-msi-hole;
- reg = <0x0000000c 0x0ec00000 0x00000008 /* Config space access */
- 0x00000000 0x00000000 0x00000000 /* no IACK cycles */
- 0x0000000c 0x0ed00000 0x00000004 /* Special cycles */
- 0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
- 0x0000000c 0x0ec80100 0x000000fc>; /* Internal messaging registers */
+ reg = <0x0000000c 0x0ec00000 0x00000008 /* Config space access */
+ 0x00000000 0x00000000 0x00000000 /* no IACK cycles */
+ 0x0000000c 0x0ed00000 0x00000004 /* Special cycles */
+ 0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
+ 0x0000000c 0x0ec80100 0x000000fc>; /* Internal messaging registers */
/* Outbound ranges, one memory and one IO,
* later cannot be changed
@@ -453,6 +486,6 @@
};
chosen {
- linux,stdout-path = "/plb/opb/serial@10000200";
+ linux,stdout-path = "/plb/opb/serial@f0000200";
};
};
--
1.6.6.1
^ permalink raw reply related
* Re: [PATCH 1/4] gpiolib: Introduce chip addition/removal notifier
From: Anton Vorontsov @ 2010-01-26 17:28 UTC (permalink / raw)
To: David Brownell
Cc: David Brownell, Dmitry Eremin-Solenikov, linux-kernel,
linuxppc-dev, Bill Gatliff, Andrew Morton
In-Reply-To: <201001252234.30169.david-b@pacbell.net>
On Mon, Jan 25, 2010 at 10:34:29PM -0800, David Brownell wrote:
> On Monday 25 January 2010, Anton Vorontsov wrote:
> >
> > +config GPIOLIB_NOTIFIER
> > + bool
> > + help
> > + This symbol is selected by subsystems that need to handle GPIO
> > + chips addition and removal. E.g., this is used for the
> > + OpenFirmware bindings.
> > +
>
> I'm no huge fan of notifiers, but I suppose they have their place.
>
> However ... I don't see a lot of win to making this optional.
OK, will remove it.
> Just
> inline the little two blocking_notifier_call_chain() calls directly,
> making this a *LOT* simpler.
I'd rather stay with gpio_call_chain() helper, it makes the code
a little bit prettier, IMO. Compare this:
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1103,6 +1107,9 @@ fail:
pr_err("gpiochip_add: gpios %d..%d (%s) not registered\n",
chip->base, chip->base + chip->ngpio - 1,
chip->label ? : "generic");
+ else
+ blocking_notifier_call_chain(&gpio_notifier,
+ GPIO_NOTIFY_CHIP_ADDED, chip);
return status;
}
EXPORT_SYMBOL_GPL(gpiochip_add);
@@ -1119,6 +1126,13 @@ int gpiochip_remove(struct gpio_chip *chip)
int status = 0;
unsigned id;
+ /* Ask external subsystems to release the chip. */
+ status = blocking_notifier_call_chain(&gpio_notifier,
+ GPIO_NOTIFY_CHIP_REMOVE, chip);
+ status = notifier_to_errno(status);
+ if (status)
+ return status;
+
spin_lock_irqsave(&gpio_lock, flags);
for (id = chip->base; id < chip->base + chip->ngpio; id++) {
---
With the call_chain helper:
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1029,6 +1030,16 @@ static inline void gpiochip_unexport(struct gpio_chip *chip)
#endif /* CONFIG_GPIO_SYSFS */
+static int gpio_call_chain(struct gpio_chip *chip, enum gpio_notify_msg msg)
+{
+ int ret = blocking_notifier_call_chain(&gpio_notifier, msg, chip);
+
+ return notifier_to_errno(ret);
+}
+
/**
* gpiochip_add() - register a gpio_chip
* @chip: the chip to register, with chip->base initialized
@@ -1103,6 +1114,9 @@ fail:
pr_err("gpiochip_add: gpios %d..%d (%s) not registered\n",
chip->base, chip->base + chip->ngpio - 1,
chip->label ? : "generic");
+ else
+ gpio_call_chain(chip, GPIO_NOTIFY_CHIP_ADDED);
+
return status;
}
EXPORT_SYMBOL_GPL(gpiochip_add);
@@ -1119,6 +1133,11 @@ int gpiochip_remove(struct gpio_chip *chip)
int status = 0;
unsigned id;
+ /* Ask external subsystems to release the chip. */
+ status = gpio_call_chain(chip, GPIO_NOTIFY_CHIP_REMOVE);
+ if (status)
+ return status;
+
spin_lock_irqsave(&gpio_lock, flags);
for (id = chip->base; id < chip->base + chip->ngpio; id++) {
---
Thanks!
^ permalink raw reply
* Re: [PATCH 2/4] of/gpio: Add support for two-stage registration for the of_gpio_chips
From: Anton Vorontsov @ 2010-01-26 17:43 UTC (permalink / raw)
To: David Brownell
Cc: David Brownell, Dmitry Eremin-Solenikov, linux-kernel,
linuxppc-dev, Bill Gatliff, Andrew Morton
In-Reply-To: <201001252236.16141.david-b@pacbell.net>
On Mon, Jan 25, 2010 at 10:36:15PM -0800, David Brownell wrote:
> On Monday 25 January 2010, Anton Vorontsov wrote:
> > With this patch there are two ways to register OF GPIO controllers:
> >
> > 1. Allocating the of_gpio_chip structure and passing the
> > &of_gc->gc pointer to the gpiochip_add. (Can use container_of
> > to convert the gpio_chip to the of_gpio_chip.)
> >
> > 2. Allocating and registering the gpio_chip structure separately
> > from the of_gpio_chip. (Since two allocations are separate,
> > container_of won't work.)
> >
> > As time goes by we'll kill the first option.
>
> Why have two options, instead of just the first/simpler one??
Because I2C/SPI drivers allocate (and register) gpio_chip structures
by themselves, so the first option is a no-go.
You can see the first option in use in
arch/powerpc/sysdev/qe_lib/gpio.c:
struct qe_gpio_chip {
struct of_mm_gpio_chip mm_gc;
....
};
Now include/linux/of_gpio.h:
struct of_mm_gpio_chip {
struct of_gpio_chip of_gc;
...
};
struct of_gpio_chip {
struct gpio_chip gc; <- here, I'm going to get rid of it
...
};
I2C/SPI drivers allocate gpio_chip structure already, so we don't
need to store 'struct gpio_chip gc', instead we need to store just
a pointer, and then attach the already allocated gpio_chip to the
of_gpio_chip stuff.
Having two ways to store gpio_chip isn't good, that's why
I stated that the first option will have to go, i.e. I'm going to
convert arch/powerpc/sysdev/qe_lib/gpio.c and few other of_mm
gpio chips to the new registration scheme soon.
Thanks,
--
Anton Vorontsov
email: cbouatmailru@gmail.com
irc://irc.freenode.net/bd2
^ permalink raw reply
* Re: [PATCH v2 1/3] i2c-mpc: use __devinit[data] for initialization functions and data
From: Wolfgang Grandegger @ 2010-01-26 18:44 UTC (permalink / raw)
To: Ben Dooks
Cc: Devicetree-discuss, Linuxppc-dev, Linux-i2c, Wolfgang Grandegger
In-Reply-To: <20100126143507.GA12774@fluff.org.uk>
Ben Dooks wrote:
> On Mon, Jan 25, 2010 at 09:55:04PM +0100, Wolfgang Grandegger wrote:
>> From: Wolfgang Grandegger <wg@denx.de>
>>
>> "__devinit[data]" has not yet been used for all initialization functions
>> and data. To avoid truncating lines, the struct mpc_i2c_match_data has
>> been renamed to mpc_i2c_data, which is even the better name.
>>
>> Signed-off-by: Wolfgang Grandegger <wg@denx.de>
>> ---
>> drivers/i2c/busses/i2c-mpc.c | 99 +++++++++++++++++++----------------------
>> 1 files changed, 46 insertions(+), 53 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
>> index f627001..2cb864e 100644
>> --- a/drivers/i2c/busses/i2c-mpc.c
>> +++ b/drivers/i2c/busses/i2c-mpc.c
>> @@ -66,7 +66,7 @@ struct mpc_i2c_divider {
>> u16 fdr; /* including dfsrr */
>> };
>>
>> -struct mpc_i2c_match_data {
>> +struct mpc_i2c_data {
>> void (*setclock)(struct device_node *node,
>> struct mpc_i2c *i2c,
>> u32 clock, u32 prescaler);
>> @@ -165,7 +165,7 @@ static int i2c_wait(struct mpc_i2c *i2c, unsigned timeout, int writing)
>> }
>>
>> #ifdef CONFIG_PPC_MPC52xx
>> -static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
>> +static const struct __devinitdata mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
>> {20, 0x20}, {22, 0x21}, {24, 0x22}, {26, 0x23},
>> {28, 0x24}, {30, 0x01}, {32, 0x25}, {34, 0x02},
>> {36, 0x26}, {40, 0x27}, {44, 0x04}, {48, 0x28},
>> @@ -186,7 +186,8 @@ static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
>> {10240, 0x9d}, {12288, 0x9e}, {15360, 0x9f}
>> };
>>
>> -int mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock, int prescaler)
>> +static int __devinit mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock,
>> + int prescaler)
>> {
>> const struct mpc_i2c_divider *div = NULL;
>> unsigned int pvr = mfspr(SPRN_PVR);
>> @@ -215,9 +216,9 @@ int mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock, int prescaler)
>> return div ? (int)div->fdr : -EINVAL;
>> }
>>
>> -static void mpc_i2c_setclock_52xx(struct device_node *node,
>> - struct mpc_i2c *i2c,
>> - u32 clock, u32 prescaler)
>> +static void __devinit mpc_i2c_setclock_52xx(struct device_node *node,
>> + struct mpc_i2c *i2c,
>> + u32 clock, u32 prescaler)
>> {
>> int ret, fdr;
>>
>> @@ -230,15 +231,15 @@ static void mpc_i2c_setclock_52xx(struct device_node *node,
>> dev_info(i2c->dev, "clock %d Hz (fdr=%d)\n", clock, fdr);
>> }
>> #else /* !CONFIG_PPC_MPC52xx */
>> -static void mpc_i2c_setclock_52xx(struct device_node *node,
>> - struct mpc_i2c *i2c,
>> - u32 clock, u32 prescaler)
>> +static void __devinit mpc_i2c_setclock_52xx(struct device_node *node,
>> + struct mpc_i2c *i2c,
>> + u32 clock, u32 prescaler)
>> {
>> }
>> #endif /* CONFIG_PPC_MPC52xx*/
>>
>> #ifdef CONFIG_FSL_SOC
>> -static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
>> +static const struct __devinitdata mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
>> {160, 0x0120}, {192, 0x0121}, {224, 0x0122}, {256, 0x0123},
>> {288, 0x0100}, {320, 0x0101}, {352, 0x0601}, {384, 0x0102},
>> {416, 0x0602}, {448, 0x0126}, {480, 0x0103}, {512, 0x0127},
>> @@ -258,7 +259,7 @@ static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
>> {49152, 0x011e}, {61440, 0x011f}
>> };
>>
>> -u32 mpc_i2c_get_sec_cfg_8xxx(void)
>> +static u32 __devinit mpc_i2c_get_sec_cfg_8xxx(void)
>> {
>> struct device_node *node = NULL;
>> u32 __iomem *reg;
>> @@ -287,7 +288,8 @@ u32 mpc_i2c_get_sec_cfg_8xxx(void)
>> return val;
>> }
>>
>> -int mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock, u32 prescaler)
>> +static int __devinit mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock,
>> + u32 prescaler)
>> {
>> const struct mpc_i2c_divider *div = NULL;
>> u32 divider;
>> @@ -320,9 +322,9 @@ int mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock, u32 prescaler)
>> return div ? (int)div->fdr : -EINVAL;
>> }
>>
>> -static void mpc_i2c_setclock_8xxx(struct device_node *node,
>> - struct mpc_i2c *i2c,
>> - u32 clock, u32 prescaler)
>> +static void __devinit mpc_i2c_setclock_8xxx(struct device_node *node,
>> + struct mpc_i2c *i2c,
>> + u32 clock, u32 prescaler)
>> {
>> int ret, fdr;
>>
>> @@ -338,9 +340,9 @@ static void mpc_i2c_setclock_8xxx(struct device_node *node,
>> }
>>
>> #else /* !CONFIG_FSL_SOC */
>> -static void mpc_i2c_setclock_8xxx(struct device_node *node,
>> - struct mpc_i2c *i2c,
>> - u32 clock, u32 prescaler)
>> +static void __devinit mpc_i2c_setclock_8xxx(struct device_node *node,
>> + struct mpc_i2c *i2c,
>> + u32 clock, u32 prescaler)
>> {
>> }
>> #endif /* CONFIG_FSL_SOC */
>> @@ -529,8 +531,8 @@ static int __devinit fsl_i2c_probe(struct of_device *op,
>> clock = *prop;
>>
>> if (match->data) {
>> - struct mpc_i2c_match_data *data =
>> - (struct mpc_i2c_match_data *)match->data;
>> + struct mpc_i2c_data *data =
>> + (struct mpc_i2c_data *)match->data;
>> data->setclock(op->node, i2c, clock, data->prescaler);
>> } else {
>> /* Backwards compatibility */
>> @@ -582,44 +584,35 @@ static int __devexit fsl_i2c_remove(struct of_device *op)
>> return 0;
>> };
>>
>> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_52xx = {
>> + .setclock = mpc_i2c_setclock_52xx,
>> +};
>> +
>> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_8313 = {
>> + .setclock = mpc_i2c_setclock_8xxx,
>> +};
>> +
>> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_8543 = {
>> + .setclock = mpc_i2c_setclock_8xxx,
>> + .prescaler = 2,
>> +};
>> +
>> +static struct mpc_i2c_data __devinitdata mpc_i2c_data_8544 = {
>> + .setclock = mpc_i2c_setclock_8xxx,
>> + .prescaler = 3,
>> +};
>> +
>> static const struct of_device_id mpc_i2c_of_match[] = {
>> - {.compatible = "mpc5200-i2c",
>> - .data = &(struct mpc_i2c_match_data) {
>> - .setclock = mpc_i2c_setclock_52xx,
>> - },
>> - },
>> - {.compatible = "fsl,mpc5200b-i2c",
>> - .data = &(struct mpc_i2c_match_data) {
>> - .setclock = mpc_i2c_setclock_52xx,
>> - },
>> - },
>> - {.compatible = "fsl,mpc5200-i2c",
>> - .data = &(struct mpc_i2c_match_data) {
>> - .setclock = mpc_i2c_setclock_52xx,
>> - },
>> - },
>> - {.compatible = "fsl,mpc8313-i2c",
>> - .data = &(struct mpc_i2c_match_data) {
>> - .setclock = mpc_i2c_setclock_8xxx,
>> - },
>> - },
>> - {.compatible = "fsl,mpc8543-i2c",
>> - .data = &(struct mpc_i2c_match_data) {
>> - .setclock = mpc_i2c_setclock_8xxx,
>> - .prescaler = 2,
>> - },
>> - },
>> - {.compatible = "fsl,mpc8544-i2c",
>> - .data = &(struct mpc_i2c_match_data) {
>> - .setclock = mpc_i2c_setclock_8xxx,
>> - .prescaler = 3,
>> - },
>> + {.compatible = "mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
>> + {.compatible = "fsl,mpc5200b-i2c", .data = &mpc_i2c_data_52xx, },
>> + {.compatible = "fsl,mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
>> + {.compatible = "fsl,mpc8313-i2c", .data = &mpc_i2c_data_8313, },
>> + {.compatible = "fsl,mpc8543-i2c", .data = &mpc_i2c_data_8543, },
>> + {.compatible = "fsl,mpc8544-i2c", .data = &mpc_i2c_data_8544, },
>> /* Backward compatibility */
>> - },
>> {.compatible = "fsl-i2c", },
>> {},
>> };
>
> Any particular reason you decided to move this all about?
This was necessary to allow using __devinit[data] for the clock setup
functions and clock diviver arrays above which results in some notable
saving of memory space if the driver is statically linked into the
kernel. If the data is defined within "mpc_i2c_of_match", section
mismatches are reported.
> Are you sure that __devinitdata is the right thing here, I've no idea
> if there is currently any hotplug type support for openfirmware or
> not.
I agree that __init[data] is more appropriate for this driver even if
many other non-hotplugable drivers use __devinit[data]. I will change that.
Wolfgang.
^ permalink raw reply
* Re: [PATCH 2/3] i2c-mpc: add support for the MPC512x processors from Freescale
From: Wolfgang Grandegger @ 2010-01-26 18:44 UTC (permalink / raw)
To: Ben Dooks
Cc: Devicetree-discuss, Linuxppc-dev, Wolfgang Grandegger, Linux-i2c
In-Reply-To: <20100126143925.GD12774@fluff.org.uk>
Ben Dooks wrote:
> On Mon, Jan 25, 2010 at 04:15:09PM +0100, Wolfram Sang wrote:
>>>>>
>>>>> -static void __devinit mpc_i2c_setclock_52xx(struct device_node *node,
>>>>> - struct mpc_i2c *i2c,
>>>>> - u32 clock, u32 prescaler)
>>>>> +static void __devinit mpc_i2c_setup_52xx(struct device_node *node,
>>>>> + struct mpc_i2c *i2c,
>>>>> + u32 clock, u32 prescaler)
>>>>> {
>>>>> int ret, fdr;
>>>>>
>>>>> + if (clock == -1) {
>>>> Could we use 0 for 'no_clock'? This would make the above statement simply
>>> "0" is already used to maintain backward compatibility setting a safe
>>> divider.
>> Ah, now I see:
>>
>> 'clock == -1' means 'preserve clocks' (and is checked here in mpc_i2c_setup_52xx())
>> 'clock == 0' means 'safe divider' (and is checked in mpc_i2c_get_fdr_52xx())
>
> hmm, sounds like a job for a #define or similar.
See v2 of this patch.
Wolfgang.
^ permalink raw reply
* [PATCH v3 0/3] i2c-mpc: add support for the Freescale MPC512x and other fixes
From: Wolfgang Grandegger @ 2010-01-26 19:28 UTC (permalink / raw)
To: Linux-i2c; +Cc: Devicetree-discuss, Linuxppc-dev, Wolfgang Grandegger
From: Wolfgang Grandegger <wg@denx.de>
This patch series adds support for the MPC512x from Freescale to the
i2c-mpc driver. At that occasion, issues with __devinit[data] have
been fixed and the doc of the FSL I2C dts bindings updated. It has
been tested on a MPC5121ADS, TQM5200 and TQM8560 board
Changes since v1:
- use macro MPC_I2C_CLOCK_PRESERVE/SAFE for the special clock settings.
- document the special DTS node "fsl,mpc5121-i2c-ctrl".
- update and correct the Kconfig help.
- some other minor fixes as suggested by Wolfram.
Changes since v2:
- use __init[data] instead of __devinit[data] for this driver.
Wolfgang
Wolfgang Grandegger (3):
i2c-mpc: use __init[data] for initialization functions and data
i2c-mpc: add support for the MPC512x processors from Freescale
powerpc: doc/dts-bindings: update doc of FSL I2C bindings
Documentation/powerpc/dts-bindings/fsl/i2c.txt | 30 +++-
drivers/i2c/busses/Kconfig | 7 +-
drivers/i2c/busses/i2c-mpc.c | 197 +++++++++++++++---------
3 files changed, 150 insertions(+), 84 deletions(-)
^ permalink raw reply
* [PATCH v3 1/3] i2c-mpc: use __init[data] for initialization functions and data
From: Wolfgang Grandegger @ 2010-01-26 19:28 UTC (permalink / raw)
To: Linux-i2c; +Cc: Devicetree-discuss, Linuxppc-dev, Wolfgang Grandegger
In-Reply-To: <1264534095-20777-1-git-send-email-wg@grandegger.com>
From: Wolfgang Grandegger <wg@denx.de>
"__devinit[data]" has been renamed to "__init[data]" as this is not
a hotplugable device. Futhermore, all initialization functions and
data are now marked properly. To avoid truncating lines, the struct
"mpc_i2c_match_data" has been renamed to "mpc_i2c_data", which is
even the better name.
Signed-off-by: Wolfgang Grandegger <wg@denx.de>
---
drivers/i2c/busses/i2c-mpc.c | 107 +++++++++++++++++++----------------------
1 files changed, 50 insertions(+), 57 deletions(-)
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index f627001..222f6b8 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -66,7 +66,7 @@ struct mpc_i2c_divider {
u16 fdr; /* including dfsrr */
};
-struct mpc_i2c_match_data {
+struct mpc_i2c_data {
void (*setclock)(struct device_node *node,
struct mpc_i2c *i2c,
u32 clock, u32 prescaler);
@@ -165,7 +165,7 @@ static int i2c_wait(struct mpc_i2c *i2c, unsigned timeout, int writing)
}
#ifdef CONFIG_PPC_MPC52xx
-static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
+static const struct __initdata mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
{20, 0x20}, {22, 0x21}, {24, 0x22}, {26, 0x23},
{28, 0x24}, {30, 0x01}, {32, 0x25}, {34, 0x02},
{36, 0x26}, {40, 0x27}, {44, 0x04}, {48, 0x28},
@@ -186,7 +186,8 @@ static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
{10240, 0x9d}, {12288, 0x9e}, {15360, 0x9f}
};
-int mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock, int prescaler)
+static int __init mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock,
+ int prescaler)
{
const struct mpc_i2c_divider *div = NULL;
unsigned int pvr = mfspr(SPRN_PVR);
@@ -215,9 +216,9 @@ int mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock, int prescaler)
return div ? (int)div->fdr : -EINVAL;
}
-static void mpc_i2c_setclock_52xx(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler)
+static void __init mpc_i2c_setclock_52xx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
{
int ret, fdr;
@@ -230,15 +231,15 @@ static void mpc_i2c_setclock_52xx(struct device_node *node,
dev_info(i2c->dev, "clock %d Hz (fdr=%d)\n", clock, fdr);
}
#else /* !CONFIG_PPC_MPC52xx */
-static void mpc_i2c_setclock_52xx(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler)
+static void __init mpc_i2c_setclock_52xx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
{
}
#endif /* CONFIG_PPC_MPC52xx*/
#ifdef CONFIG_FSL_SOC
-static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
+static const struct __initdata mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
{160, 0x0120}, {192, 0x0121}, {224, 0x0122}, {256, 0x0123},
{288, 0x0100}, {320, 0x0101}, {352, 0x0601}, {384, 0x0102},
{416, 0x0602}, {448, 0x0126}, {480, 0x0103}, {512, 0x0127},
@@ -258,7 +259,7 @@ static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
{49152, 0x011e}, {61440, 0x011f}
};
-u32 mpc_i2c_get_sec_cfg_8xxx(void)
+static u32 __init mpc_i2c_get_sec_cfg_8xxx(void)
{
struct device_node *node = NULL;
u32 __iomem *reg;
@@ -287,7 +288,8 @@ u32 mpc_i2c_get_sec_cfg_8xxx(void)
return val;
}
-int mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock, u32 prescaler)
+static int __init mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock,
+ u32 prescaler)
{
const struct mpc_i2c_divider *div = NULL;
u32 divider;
@@ -320,9 +322,9 @@ int mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock, u32 prescaler)
return div ? (int)div->fdr : -EINVAL;
}
-static void mpc_i2c_setclock_8xxx(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler)
+static void __init mpc_i2c_setclock_8xxx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
{
int ret, fdr;
@@ -338,9 +340,9 @@ static void mpc_i2c_setclock_8xxx(struct device_node *node,
}
#else /* !CONFIG_FSL_SOC */
-static void mpc_i2c_setclock_8xxx(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler)
+static void __init mpc_i2c_setclock_8xxx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
{
}
#endif /* CONFIG_FSL_SOC */
@@ -489,8 +491,8 @@ static struct i2c_adapter mpc_ops = {
.timeout = HZ,
};
-static int __devinit fsl_i2c_probe(struct of_device *op,
- const struct of_device_id *match)
+static int __init fsl_i2c_probe(struct of_device *op,
+ const struct of_device_id *match)
{
struct mpc_i2c *i2c;
const u32 *prop;
@@ -529,8 +531,8 @@ static int __devinit fsl_i2c_probe(struct of_device *op,
clock = *prop;
if (match->data) {
- struct mpc_i2c_match_data *data =
- (struct mpc_i2c_match_data *)match->data;
+ struct mpc_i2c_data *data =
+ (struct mpc_i2c_data *)match->data;
data->setclock(op->node, i2c, clock, data->prescaler);
} else {
/* Backwards compatibility */
@@ -566,7 +568,7 @@ static int __devinit fsl_i2c_probe(struct of_device *op,
return result;
};
-static int __devexit fsl_i2c_remove(struct of_device *op)
+static int __exit fsl_i2c_remove(struct of_device *op)
{
struct mpc_i2c *i2c = dev_get_drvdata(&op->dev);
@@ -582,44 +584,35 @@ static int __devexit fsl_i2c_remove(struct of_device *op)
return 0;
};
+static struct mpc_i2c_data __initdata mpc_i2c_data_52xx = {
+ .setclock = mpc_i2c_setclock_52xx,
+};
+
+static struct mpc_i2c_data __initdata mpc_i2c_data_8313 = {
+ .setclock = mpc_i2c_setclock_8xxx,
+};
+
+static struct mpc_i2c_data __initdata mpc_i2c_data_8543 = {
+ .setclock = mpc_i2c_setclock_8xxx,
+ .prescaler = 2,
+};
+
+static struct mpc_i2c_data __initdata mpc_i2c_data_8544 = {
+ .setclock = mpc_i2c_setclock_8xxx,
+ .prescaler = 3,
+};
+
static const struct of_device_id mpc_i2c_of_match[] = {
- {.compatible = "mpc5200-i2c",
- .data = &(struct mpc_i2c_match_data) {
- .setclock = mpc_i2c_setclock_52xx,
- },
- },
- {.compatible = "fsl,mpc5200b-i2c",
- .data = &(struct mpc_i2c_match_data) {
- .setclock = mpc_i2c_setclock_52xx,
- },
- },
- {.compatible = "fsl,mpc5200-i2c",
- .data = &(struct mpc_i2c_match_data) {
- .setclock = mpc_i2c_setclock_52xx,
- },
- },
- {.compatible = "fsl,mpc8313-i2c",
- .data = &(struct mpc_i2c_match_data) {
- .setclock = mpc_i2c_setclock_8xxx,
- },
- },
- {.compatible = "fsl,mpc8543-i2c",
- .data = &(struct mpc_i2c_match_data) {
- .setclock = mpc_i2c_setclock_8xxx,
- .prescaler = 2,
- },
- },
- {.compatible = "fsl,mpc8544-i2c",
- .data = &(struct mpc_i2c_match_data) {
- .setclock = mpc_i2c_setclock_8xxx,
- .prescaler = 3,
- },
+ {.compatible = "mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
+ {.compatible = "fsl,mpc5200b-i2c", .data = &mpc_i2c_data_52xx, },
+ {.compatible = "fsl,mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
+ {.compatible = "fsl,mpc8313-i2c", .data = &mpc_i2c_data_8313, },
+ {.compatible = "fsl,mpc8543-i2c", .data = &mpc_i2c_data_8543, },
+ {.compatible = "fsl,mpc8544-i2c", .data = &mpc_i2c_data_8544, },
/* Backward compatibility */
- },
{.compatible = "fsl-i2c", },
{},
};
-
MODULE_DEVICE_TABLE(of, mpc_i2c_of_match);
@@ -627,7 +620,7 @@ MODULE_DEVICE_TABLE(of, mpc_i2c_of_match);
static struct of_platform_driver mpc_i2c_driver = {
.match_table = mpc_i2c_of_match,
.probe = fsl_i2c_probe,
- .remove = __devexit_p(fsl_i2c_remove),
+ .remove = __exit_p(fsl_i2c_remove),
.driver = {
.owner = THIS_MODULE,
.name = DRV_NAME,
--
1.6.2.5
^ permalink raw reply related
* [PATCH v3 2/3] i2c-mpc: add support for the MPC512x processors from Freescale
From: Wolfgang Grandegger @ 2010-01-26 19:28 UTC (permalink / raw)
To: Linux-i2c; +Cc: Devicetree-discuss, Linuxppc-dev, Wolfgang Grandegger
In-Reply-To: <1264534095-20777-2-git-send-email-wg@grandegger.com>
From: Wolfgang Grandegger <wg@denx.de>
The "setclock" initialization functions have been renamed to "setup"
because I2C interrupts must be enabled for the MPC512x. This requires
to handle "fsl,preserve-clocking" in a slighly different way. Also,
the old settings are now reported calling dev_dbg(). For the MPC512x
the clock setup function of the MPC52xx can be re-used. Furthermore,
the Kconfig help has been updated and corrected.
Signed-off-by: Wolfgang Grandegger <wg@denx.de>
---
drivers/i2c/busses/Kconfig | 7 +--
drivers/i2c/busses/i2c-mpc.c | 122 ++++++++++++++++++++++++++++++-----------
2 files changed, 92 insertions(+), 37 deletions(-)
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 5f318ce..5477e41 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -418,13 +418,12 @@ config I2C_IXP2000
instead.
config I2C_MPC
- tristate "MPC107/824x/85xx/52xx/86xx"
+ tristate "MPC107/824x/85xx/512x/52xx/83xx/86xx"
depends on PPC32
help
If you say yes to this option, support will be included for the
- built-in I2C interface on the MPC107/Tsi107/MPC8240/MPC8245 and
- MPC85xx/MPC8641 family processors. The driver may also work on 52xx
- family processors, though interrupts are known not to work.
+ built-in I2C interface on the MPC107, Tsi107, MPC512x, MPC52xx,
+ MPC8240, MPC8245, MPC83xx, MPC85xx and MPC8641 family processors.
This driver can also be built as a module. If so, the module
will be called i2c-mpc.
diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index 222f6b8..faea046 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -31,6 +31,9 @@
#define DRV_NAME "mpc-i2c"
+#define MPC_I2C_CLOCK_SAFE 0
+#define MPC_I2C_CLOCK_PRESERVE (~0U)
+
#define MPC_I2C_FDR 0x04
#define MPC_I2C_CR 0x08
#define MPC_I2C_SR 0x0c
@@ -67,9 +70,8 @@ struct mpc_i2c_divider {
};
struct mpc_i2c_data {
- void (*setclock)(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler);
+ void (*setup)(struct device_node *node, struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler);
u32 prescaler;
};
@@ -164,7 +166,7 @@ static int i2c_wait(struct mpc_i2c *i2c, unsigned timeout, int writing)
return 0;
}
-#ifdef CONFIG_PPC_MPC52xx
+#if defined(CONFIG_PPC_MPC52xx) || defined(CONFIG_PPC_MPC512x)
static const struct __initdata mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
{20, 0x20}, {22, 0x21}, {24, 0x22}, {26, 0x23},
{28, 0x24}, {30, 0x01}, {32, 0x25}, {34, 0x02},
@@ -216,12 +218,18 @@ static int __init mpc_i2c_get_fdr_52xx(struct device_node *node, u32 clock,
return div ? (int)div->fdr : -EINVAL;
}
-static void __init mpc_i2c_setclock_52xx(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler)
+static void __init mpc_i2c_setup_52xx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
{
int ret, fdr;
+ if (clock == MPC_I2C_CLOCK_PRESERVE) {
+ dev_dbg(i2c->dev, "using fdr %d\n",
+ readb(i2c->base + MPC_I2C_FDR));
+ return;
+ }
+
ret = mpc_i2c_get_fdr_52xx(node, clock, prescaler);
fdr = (ret >= 0) ? ret : 0x3f; /* backward compatibility */
@@ -230,13 +238,49 @@ static void __init mpc_i2c_setclock_52xx(struct device_node *node,
if (ret >= 0)
dev_info(i2c->dev, "clock %d Hz (fdr=%d)\n", clock, fdr);
}
-#else /* !CONFIG_PPC_MPC52xx */
-static void __init mpc_i2c_setclock_52xx(struct device_node *node,
+#else /* !(CONFIG_PPC_MPC52xx || CONFIG_PPC_MPC512x) */
+static void __init mpc_i2c_setup_52xx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
+{
+}
+#endif /* CONFIG_PPC_MPC52xx || CONFIG_PPC_MPC512x */
+
+#ifdef CONFIG_PPC_MPC512x
+static void __init mpc_i2c_setup_512x(struct device_node *node,
struct mpc_i2c *i2c,
u32 clock, u32 prescaler)
{
+ struct device_node *node_ctrl;
+ void __iomem *ctrl;
+ const u32 *pval;
+ u32 idx;
+
+ /* Enable I2C interrupts for mpc5121 */
+ node_ctrl = of_find_compatible_node(NULL, NULL,
+ "fsl,mpc5121-i2c-ctrl");
+ if (node_ctrl) {
+ ctrl = of_iomap(node_ctrl, 0);
+ if (ctrl) {
+ /* Interrupt enable bits for i2c-0/1/2: bit 24/26/28 */
+ pval = of_get_property(node, "reg", NULL);
+ idx = (*pval & 0xff) / 0x20;
+ setbits32(ctrl, 1 << (24 + idx * 2));
+ iounmap(ctrl);
+ }
+ of_node_put(node_ctrl);
+ }
+
+ /* The clock setup for the 52xx works also fine for the 512x */
+ mpc_i2c_setup_52xx(node, i2c, clock, prescaler);
}
-#endif /* CONFIG_PPC_MPC52xx*/
+#else /* CONFIG_PPC_MPC512x */
+static void __init mpc_i2c_setup_512x(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
+{
+}
+#endif /* CONFIG_PPC_MPC512x */
#ifdef CONFIG_FSL_SOC
static const struct __initdata mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
@@ -322,12 +366,19 @@ static int __init mpc_i2c_get_fdr_8xxx(struct device_node *node, u32 clock,
return div ? (int)div->fdr : -EINVAL;
}
-static void __init mpc_i2c_setclock_8xxx(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler)
+static void __init mpc_i2c_setup_8xxx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
{
int ret, fdr;
+ if (clock == MPC_I2C_CLOCK_PRESERVE) {
+ dev_dbg(i2c->dev, "using dfsrr %d, fdr %d\n",
+ readb(i2c->base + MPC_I2C_DFSRR),
+ readb(i2c->base + MPC_I2C_FDR));
+ return;
+ }
+
ret = mpc_i2c_get_fdr_8xxx(node, clock, prescaler);
fdr = (ret >= 0) ? ret : 0x1031; /* backward compatibility */
@@ -340,9 +391,9 @@ static void __init mpc_i2c_setclock_8xxx(struct device_node *node,
}
#else /* !CONFIG_FSL_SOC */
-static void __init mpc_i2c_setclock_8xxx(struct device_node *node,
- struct mpc_i2c *i2c,
- u32 clock, u32 prescaler)
+static void __init mpc_i2c_setup_8xxx(struct device_node *node,
+ struct mpc_i2c *i2c,
+ u32 clock, u32 prescaler)
{
}
#endif /* CONFIG_FSL_SOC */
@@ -496,7 +547,7 @@ static int __init fsl_i2c_probe(struct of_device *op,
{
struct mpc_i2c *i2c;
const u32 *prop;
- u32 clock = 0;
+ u32 clock = MPC_I2C_CLOCK_SAFE;
int result = 0;
int plen;
@@ -525,21 +576,21 @@ static int __init fsl_i2c_probe(struct of_device *op,
}
}
- if (!of_get_property(op->node, "fsl,preserve-clocking", NULL)) {
+ if (of_get_property(op->node, "fsl,preserve-clocking", NULL)) {
+ clock = MPC_I2C_CLOCK_PRESERVE;
+ } else {
prop = of_get_property(op->node, "clock-frequency", &plen);
if (prop && plen == sizeof(u32))
clock = *prop;
+ }
- if (match->data) {
- struct mpc_i2c_data *data =
- (struct mpc_i2c_data *)match->data;
- data->setclock(op->node, i2c, clock, data->prescaler);
- } else {
- /* Backwards compatibility */
- if (of_get_property(op->node, "dfsrr", NULL))
- mpc_i2c_setclock_8xxx(op->node, i2c,
- clock, 0);
- }
+ if (match->data) {
+ struct mpc_i2c_data *data = match->data;
+ data->setup(op->node, i2c, clock, data->prescaler);
+ } else {
+ /* Backwards compatibility */
+ if (of_get_property(op->node, "dfsrr", NULL))
+ mpc_i2c_setup_8xxx(op->node, i2c, clock, 0);
}
dev_set_drvdata(&op->dev, i2c);
@@ -584,21 +635,25 @@ static int __exit fsl_i2c_remove(struct of_device *op)
return 0;
};
+static struct mpc_i2c_data __initdata mpc_i2c_data_512x = {
+ .setup = mpc_i2c_setup_512x,
+};
+
static struct mpc_i2c_data __initdata mpc_i2c_data_52xx = {
- .setclock = mpc_i2c_setclock_52xx,
+ .setup = mpc_i2c_setup_52xx,
};
static struct mpc_i2c_data __initdata mpc_i2c_data_8313 = {
- .setclock = mpc_i2c_setclock_8xxx,
+ .setup = mpc_i2c_setup_8xxx,
};
static struct mpc_i2c_data __initdata mpc_i2c_data_8543 = {
- .setclock = mpc_i2c_setclock_8xxx,
+ .setup = mpc_i2c_setup_8xxx,
.prescaler = 2,
};
static struct mpc_i2c_data __initdata mpc_i2c_data_8544 = {
- .setclock = mpc_i2c_setclock_8xxx,
+ .setup = mpc_i2c_setup_8xxx,
.prescaler = 3,
};
@@ -606,6 +661,7 @@ static const struct of_device_id mpc_i2c_of_match[] = {
{.compatible = "mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
{.compatible = "fsl,mpc5200b-i2c", .data = &mpc_i2c_data_52xx, },
{.compatible = "fsl,mpc5200-i2c", .data = &mpc_i2c_data_52xx, },
+ {.compatible = "fsl,mpc5121-i2c", .data = &mpc_i2c_data_512x, },
{.compatible = "fsl,mpc8313-i2c", .data = &mpc_i2c_data_8313, },
{.compatible = "fsl,mpc8543-i2c", .data = &mpc_i2c_data_8543, },
{.compatible = "fsl,mpc8544-i2c", .data = &mpc_i2c_data_8544, },
@@ -648,5 +704,5 @@ module_exit(fsl_i2c_exit);
MODULE_AUTHOR("Adrian Cox <adrian@humboldt.co.uk>");
MODULE_DESCRIPTION("I2C-Bus adapter for MPC107 bridge and "
- "MPC824x/85xx/52xx processors");
+ "MPC824x/85xx/512x/52xx processors");
MODULE_LICENSE("GPL");
--
1.6.2.5
^ permalink raw reply related
* [PATCH v3 3/3] powerpc: doc/dts-bindings: update doc of FSL I2C bindings
From: Wolfgang Grandegger @ 2010-01-26 19:28 UTC (permalink / raw)
To: Linux-i2c; +Cc: Devicetree-discuss, Linuxppc-dev, Wolfgang Grandegger
In-Reply-To: <1264534095-20777-3-git-send-email-wg@grandegger.com>
From: Wolfgang Grandegger <wg@denx.de>
This patch adds the MPC5121 to the list of supported devices,
enhances the doc of the "clock-frequency" property and removes
the obsolete "cell-index" property from the example nodes.
Furthermore and example for the MPC5121 has been added.
Signed-off-by: Wolfgang Grandegger <wg@denx.de>
---
Documentation/powerpc/dts-bindings/fsl/i2c.txt | 30 +++++++++++++++++++----
1 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/Documentation/powerpc/dts-bindings/fsl/i2c.txt b/Documentation/powerpc/dts-bindings/fsl/i2c.txt
index b6d2e21..2f62dae 100644
--- a/Documentation/powerpc/dts-bindings/fsl/i2c.txt
+++ b/Documentation/powerpc/dts-bindings/fsl/i2c.txt
@@ -9,8 +9,9 @@ Recommended properties :
- compatible : compatibility list with 2 entries, the first should
be "fsl,CHIP-i2c" where CHIP is the name of a compatible processor,
- e.g. mpc8313, mpc8543, mpc8544, mpc5200 or mpc5200b. The second one
- should be "fsl-i2c".
+ e.g. mpc8313, mpc8543, mpc8544, mpc5121, mpc5200 or mpc5200b. The
+ second one should be "fsl-i2c". For the mpc5121, an additional node
+ "fsl,mpc5121-i2c-ctrl" is required as shown in the example below.
- interrupts : <a b> where a is the interrupt number and b is a
field that represents an encoding of the sense and level
information for the interrupt. This should be encoded based on
@@ -20,29 +21,46 @@ Recommended properties :
services interrupts for this device.
- fsl,preserve-clocking : boolean; if defined, the clock settings
from the bootloader are preserved (not touched).
- - clock-frequency : desired I2C bus clock frequency in Hz.
+ - clock-frequency : desired I2C bus clock frequency in Hz. If this
+ property and "fsl,preserve-clocking" is not defined, a safe fixed
+ clock divider value is used (resulting in a small clock frequency).
Examples :
+ /* MPC5121 based board */
+ i2c@1740 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "fsl,mpc5121-i2c", "fsl-i2c";
+ reg = <0x1740 0x20>;
+ interrupts = <11 0x8>;
+ interrupt-parent = <&ipic>;
+ clock-frequency = <100000>;
+ };
+
+ i2ccontrol@1760 {
+ compatible = "fsl,mpc5121-i2c-ctrl";
+ reg = <0x1760 0x8>;
+ };
+
+ /* MPC5200B based board */
i2c@3d00 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
- cell-index = <0>;
reg = <0x3d00 0x40>;
interrupts = <2 15 0>;
interrupt-parent = <&mpc5200_pic>;
fsl,preserve-clocking;
};
+ /* MPC8544 base board */
i2c@3100 {
#address-cells = <1>;
#size-cells = <0>;
- cell-index = <1>;
compatible = "fsl,mpc8544-i2c", "fsl-i2c";
reg = <0x3100 0x100>;
interrupts = <43 2>;
interrupt-parent = <&mpic>;
clock-frequency = <400000>;
};
-
--
1.6.2.5
^ permalink raw reply related
* BSE-IP
From: Dan.Geer @ 2010-01-26 20:30 UTC (permalink / raw)
To: linuxppc-dev
My end goal is to run the latest 2.6.32 kernel on an ancient BSE-IP MPC823
board. One step in the process is an attempt to compile the last "working"
kernel for this platform, and it hasn't been pretty.
Back in 2005, Kumar Gala caught an issue with compiling for this platform,
and Dan Malek commented about which options to choose to complete a
successful compile. I'm in the process of trying to get that (2.6.16.62)
series to work. It seems that one of the newer dev boards got the focus of
the port, and the BSE-IP drop out of sight.
Is anyone still working with the BSE-IP? What is the last known working
kernel? Any suggestions/insight into what kernel works would be very much
appreciated.
Dan
^ permalink raw reply
* Re: [PATCH 1/4] gpiolib: Introduce chip addition/removal notifier
From: David Brownell @ 2010-01-26 21:01 UTC (permalink / raw)
To: avorontsov
Cc: David Brownell, Dmitry Eremin-Solenikov, linux-kernel,
linuxppc-dev, Bill Gatliff, Andrew Morton
In-Reply-To: <20100126172824.GA20319@oksana.dev.rtsoft.ru>
On Tuesday 26 January 2010, Anton Vorontsov wrote:
> > Just
> > inline the little two blocking_notifier_call_chain() calls directly,
> > making this a *LOT* simpler.
>
> I'd rather stay with gpio_call_chain() helper, it makes the code
> a little bit prettier, IMO. Compare this:
The one without the wrapper is IMO more clear, since it doesn't
obfuscate anything. Fewer lines of code, too. :)
Pretty is a good attribute ... but is a distant third to clarity.
^ permalink raw reply
* Re: [PATCH 2/4] of/gpio: Add support for two-stage registration for the of_gpio_chips
From: David Brownell @ 2010-01-26 21:02 UTC (permalink / raw)
To: avorontsov
Cc: David Brownell, Dmitry Eremin-Solenikov, linux-kernel,
linuxppc-dev, Bill Gatliff, Andrew Morton
In-Reply-To: <20100126174347.GB20319@oksana.dev.rtsoft.ru>
On Tuesday 26 January 2010, Anton Vorontsov wrote:
>
> > Why have two options, instead of just the first/simpler one??
>
> Because I2C/SPI drivers allocate (and register) gpio_chip structures
> by themselves, so the first option is a no-go.
You should be mentioning such issues in the patch comments.
^ permalink raw reply
* Re: BSE-IP
From: Scott Wood @ 2010-01-26 21:03 UTC (permalink / raw)
To: Dan.Geer; +Cc: linuxppc-dev
In-Reply-To: <OF3B9B44C2.CF12E7DB-ON852576B7.0070B35D-852576B7.0070B371@faa.gov>
Dan.Geer@faa.gov wrote:
> My end goal is to run the latest 2.6.32 kernel on an ancient BSE-IP MPC823
> board. One step in the process is an attempt to compile the last "working"
> kernel for this platform, and it hasn't been pretty.
>
> Back in 2005, Kumar Gala caught an issue with compiling for this platform,
> and Dan Malek commented about which options to choose to complete a
> successful compile. I'm in the process of trying to get that (2.6.16.62)
> series to work. It seems that one of the newer dev boards got the focus of
> the port, and the BSE-IP drop out of sight.
Newer boards have been used for recent development, but it shouldn't be
too hard to get other boards to work. With the device tree, a lot more
of the hardware description is done in a data structure, rather than
scattered throughout code.
I'd start by taking one of the existing supported 8xx boards in the
current tree, and adapting its device tree and platform file to describe
the BSE-IP, using the old code as a reference. You may also need
bootwrapper changes, depending on what firmware you use.
Things have changed enough that I don't recommend trying to directly
merge the old code into the new kernel.
-Scott
^ permalink raw reply
* Re: BSE-IP
From: Dan.Geer @ 2010-01-26 22:04 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev
In-Reply-To: <4B5F58B0.9090401@freescale.com>
> > My end goal is to run the latest 2.6.32 kernel on an ancient BSE-IP
MPC823
> > board. One step in the process is an attempt to compile the last
"working"
> > kernel for this platform, and it hasn't been pretty.
> >
> > Back in 2005, Kumar Gala caught an issue with compiling for this
platform,
> > and Dan Malek commented about which options to choose to complete a
> > successful compile. I'm in the process of trying to get that
(2.6.16.62)
> > series to work. It seems that one of the newer dev boards got the
focus of
> > the port, and the BSE-IP drop out of sight.
>
> Newer boards have been used for recent development, but it shouldn't be
> too hard to get other boards to work. With the device tree, a lot more
> of the hardware description is done in a data structure, rather than
> scattered throughout code.
>
> I'd start by taking one of the existing supported 8xx boards in the
> current tree, and adapting its device tree and platform file to describe
> the BSE-IP, using the old code as a reference. You may also need
> bootwrapper changes, depending on what firmware you use.
Any idea of the last kernel version that worked? So I know I can count on
that as a reference? I have the 2.2 pre7 from BSE, but there have been a
few changes since. ;^)
It appears the image (bootwrapper) needs to be completely self-contained,
and needs to understand how to read the flash parameters. That's on my
list.
> Things have changed enough that I don't recommend trying to directly
> merge the old code into the new kernel.
Understood.
> -Scott
=Dan
^ permalink raw reply
* Re: BSE-IP
From: Scott Wood @ 2010-01-26 22:17 UTC (permalink / raw)
To: Dan.Geer; +Cc: linuxppc-dev
In-Reply-To: <OF54D7A55A.FE6F4A1D-ON852576B7.00781D7D-852576B7.00794B17@faa.gov>
Dan.Geer@faa.gov wrote:
> Any idea of the last kernel version that worked? So I know I can count on
> that as a reference?
I'm not familiar with the board, sorry -- was just pointing out that
there shouldn't be anything too dependent on the particular boards/chips
that are currently supported out-of-the-box, and it should be easier
to add a new board than it used to be.
> I have the 2.2 pre7 from BSE, but there have been a few changes since. ;^)
Hopefully not changes in the board. :-)
That kernel should still work for extracting any knowledge about the
board's hardware that may or may not be clear from its documentation.
> It appears the image (bootwrapper) needs to be completely self-contained,
> and needs to understand how to read the flash parameters. That's on my
> list.
What firmware is on the board?
-Scott
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox