* cross-compiling Linux for PowerPC e200 core? @ 2010-03-07 6:50 Németh Márton 2010-03-08 17:34 ` Grant Likely 2010-03-08 17:47 ` cross-compiling Linux for PowerPC e200 core? Segher Boessenkool 0 siblings, 2 replies; 25+ messages in thread From: Németh Márton @ 2010-03-07 6:50 UTC (permalink / raw) To: Grant Likely, linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 2574 bytes --] Hi, I'm trying to cross-compile Linux 2.6.33 for Freescale MPC5554 [1][2]. This microcontroller is based on the e200z6 core. I could build the cross-development tools, but I could miss something because I get an error message when building Linux for PowerPC e200 core. Here are the steps I used: $ tar xjvRf binutils-2.20.tar.bz2 $ mkdir binutils-build $ cd binutils-build $ ../binutils-2.20/configure --target=powerpc-linux-gnuspe --prefix=/home/nmarci/usr/local $ make $ make install $ cd .. $ export PATH=$PATH:/home/nmarci/usr/local/binutils/bin $ tar xjvRf gcc-core-4.4.2.tar.bz2 $ mkdir gcc-build $ cd gcc-build $ ../gcc-4.4.2/configure --target=powerpc-linux-gnuspe --prefix=/home/nmarci/usr/local --disable-shared --disable-threads --enable-languages=c $ make all-gcc $ make install-gcc $ cd .. $ tar xjvRf linux-2.6.33.tar.bz2 $ ln -s linux-2.6.33 linux $ cd linux $ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnuspe- menuconfig $ make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnuspe- vmlinux HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/basic/hash HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/kxgettext.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf -s arch/powerpc/Kconfig CHK include/linux/version.h CHK include/generated/utsrelease.h CC kernel/bounds.s GEN include/generated/bounds.h CC arch/powerpc/kernel/asm-offsets.s GEN include/generated/asm-offsets.h CALL scripts/checksyscalls.sh <stdin>:1523:2: warning: #warning syscall recvmmsg not implemented HOSTCC scripts/dtc/checks.o HOSTCC scripts/dtc/data.o HOSTCC scripts/dtc/dtc-lexer.lex.o HOSTCC scripts/dtc/dtc-parser.tab.o HOSTCC scripts/dtc/dtc.o HOSTCC scripts/dtc/flattree.o HOSTCC scripts/dtc/fstree.o HOSTCC scripts/dtc/livetree.o HOSTCC scripts/dtc/srcpos.o HOSTCC scripts/dtc/treesource.o HOSTLD scripts/dtc/dtc CC scripts/mod/empty.o Assembler messages: Error: invalid switch -me200 Error: unrecognized option -me200 make[2]: *** [scripts/mod/empty.o] Error 2 make[1]: *** [scripts/mod] Error 2 make: *** [scripts] Error 2 I attach the kernel .config I used. I guess the assembler I built misses the support for e200 core. How can enable it? References: [1] Freescale MPC5554 http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC5554 [2] MPC5553/MPC5554 Microcontroller Reference Manual http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf Regards, Márton Németh [-- Attachment #2: .config --] [-- Type: text/plain, Size: 15460 bytes --] # # Automatically generated make config: don't edit # Linux kernel version: 2.6.33 # Sun Mar 7 07:40:17 2010 # # CONFIG_PPC64 is not set # # Processor support # # CONFIG_PPC_BOOK3S_32 is not set # CONFIG_PPC_85xx is not set # CONFIG_PPC_8xx is not set # CONFIG_40x is not set # CONFIG_44x is not set CONFIG_E200=y CONFIG_BOOKE=y CONFIG_FSL_BOOKE=y CONFIG_SPE=y CONFIG_PPC_MMU_NOHASH=y CONFIG_PPC_MMU_NOHASH_32=y CONFIG_PPC_BOOK3E_MMU=y # CONFIG_PPC_MM_SLICES is not set # CONFIG_SMP is not set CONFIG_NOT_COHERENT_CACHE=y CONFIG_PPC32=y CONFIG_WORD_SIZE=32 # CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set CONFIG_MMU=y CONFIG_GENERIC_CMOS_UPDATE=y 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_FIND_NEXT_BIT=y # CONFIG_ARCH_NO_VIRT_TO_BUS is not set CONFIG_PPC=y CONFIG_EARLY_PRINTK=y CONFIG_GENERIC_NVRAM=y CONFIG_SCHED_OMIT_FRAME_POINTER=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_PPC_OF=y CONFIG_OF=y # CONFIG_PPC_UDBG_16550 is not set # 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 is not set # CONFIG_PPC_DCR_MMIO is not set CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_CONSTRUCTORS=y # # General setup # # CONFIG_EXPERIMENTAL is not set CONFIG_BROKEN_ON_SMP=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y # CONFIG_SWAP is not set # CONFIG_SYSVIPC is not set # CONFIG_BSD_PROCESS_ACCT 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=17 # CONFIG_CGROUPS is not set # CONFIG_SYSFS_DEPRECATED_V2 is not set # CONFIG_RELAY is not set CONFIG_NAMESPACES=y # CONFIG_UTS_NS is not set # CONFIG_BLK_DEV_INITRD is not set # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y CONFIG_ANON_INODES=y # CONFIG_EMBEDDED is not set CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y CONFIG_FUTEX=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 # CONFIG_PROFILING is not set CONFIG_HAVE_OPROFILE=y CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y 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 CONFIG_BASE_SMALL=0 # CONFIG_MODULES is not set CONFIG_BLOCK=y CONFIG_LBDAF=y CONFIG_BLK_DEV_BSG=y # CONFIG_BLK_DEV_INTEGRITY is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_DEADLINE is not set CONFIG_DEFAULT_CFQ=y # CONFIG_DEFAULT_NOOP 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 # # Platform support # # CONFIG_PPC_CELL is not set # CONFIG_PPC_CELL_NATIVE is not set # CONFIG_PQ2ADS is not set # CONFIG_IPIC is not set # CONFIG_MPIC is not set # CONFIG_MPIC_WEIRD is not set # CONFIG_PPC_I8259 is not set # CONFIG_PPC_RTAS is not set # CONFIG_MMIO_NVRAM is not set # CONFIG_PPC_MPC106 is not set # CONFIG_PPC_970_NAP is not set # CONFIG_PPC_INDIRECT_IO is not set # CONFIG_GENERIC_IOMAP is not set # CONFIG_CPU_FREQ is not set # CONFIG_FSL_ULI1575 is not set # CONFIG_SIMPLE_GPIO is not set # # Kernel options # # CONFIG_HIGHMEM is not set # CONFIG_NO_HZ is not set # CONFIG_HIGH_RES_TIMERS is not set CONFIG_GENERIC_CLOCKEVENTS_BUILD=y # CONFIG_HZ_100 is not set CONFIG_HZ_250=y # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=250 # CONFIG_SCHED_HRTICK is not set CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set CONFIG_BINFMT_ELF=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set # CONFIG_HAVE_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_MATH_EMULATION is not set # CONFIG_IOMMU_HELPER is not set # 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_FLATMEM=y CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_PAGEFLAGS_EXTENDED=y CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MIGRATION=y # CONFIG_PHYS_ADDR_T_64BIT is not set CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y # CONFIG_KSM is not set CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 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 is not set # CONFIG_CMDLINE_BOOL is not set CONFIG_EXTRA_TARGETS="" # CONFIG_PM is not set CONFIG_SECCOMP=y CONFIG_ISA_DMA_API=y # # Bus options # CONFIG_ZONE_DMA=y # CONFIG_PPC_INDIRECT_PCI is not set CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_SYSCALL=y # CONFIG_PCIEPORTBUS is not set CONFIG_ARCH_SUPPORTS_MSI=y # CONFIG_PCI_MSI is not set CONFIG_PCI_LEGACY=y # 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 # # Advanced setup # # CONFIG_ADVANCED_OPTIONS is not set # # Default settings for advanced configuration options are used # CONFIG_LOWMEM_SIZE=0x30000000 CONFIG_LOWMEM_CAM_NUM=3 CONFIG_PAGE_OFFSET=0xc0000000 CONFIG_KERNEL_START=0xc0000000 CONFIG_PHYSICAL_START=0x00000000 CONFIG_PHYSICAL_ALIGN=0x04000000 CONFIG_TASK_SIZE=0xc0000000 CONFIG_CONSISTENT_SIZE=0x00200000 # CONFIG_NET is not set # # Device Drivers # # # Generic Driver Options # CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_SYS_HYPERVISOR is not set # CONFIG_MTD is not set CONFIG_OF_DEVICE=y # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_FD is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set # CONFIG_BLK_DEV_COW_COMMON is not set # CONFIG_BLK_DEV_LOOP is not set # # DRBD disabled because PROC_FS, INET or CONNECTOR not selected # # CONFIG_BLK_DEV_SX8 is not set # CONFIG_BLK_DEV_RAM is not set # CONFIG_CDROM_PKTCDVD is not set # CONFIG_BLK_DEV_HD is not set # CONFIG_MISC_DEVICES is not set CONFIG_HAVE_IDE=y # CONFIG_IDE is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set # CONFIG_SCSI is not set # CONFIG_SCSI_DMA is not set # CONFIG_SCSI_NETLINK is not set # CONFIG_ATA is not set # CONFIG_MD is not set # CONFIG_FUSION is not set # # IEEE 1394 (FireWire) support # # # You can enable one or both FireWire driver stacks. # # # The newer stack is recommended. # # CONFIG_FIREWIRE is not set # CONFIG_IEEE1394 is not set # CONFIG_I2O is not set # CONFIG_MACINTOSH_DRIVERS is not set # CONFIG_PHONE is not set # # Input device support # CONFIG_INPUT=y # CONFIG_INPUT_FF_MEMLESS is not set # CONFIG_INPUT_POLLDEV is not set # CONFIG_INPUT_SPARSEKMAP is not set # # Userland interfaces # CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_PSAUX=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 # CONFIG_INPUT_JOYDEV is not set # CONFIG_INPUT_EVDEV is not set # CONFIG_INPUT_EVBUG is not set # # Input Device Drivers # CONFIG_INPUT_KEYBOARD=y CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_OPENCORES is not set # CONFIG_KEYBOARD_STOWAWAY is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_XTKBD is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y CONFIG_MOUSE_PS2_ALPS=y CONFIG_MOUSE_PS2_LOGIPS2PP=y CONFIG_MOUSE_PS2_SYNAPTICS=y CONFIG_MOUSE_PS2_TRACKPOINT=y # CONFIG_MOUSE_PS2_ELANTECH is not set # CONFIG_MOUSE_PS2_SENTELIC is not set # CONFIG_MOUSE_PS2_TOUCHKIT is not set # CONFIG_MOUSE_SERIAL is not set # CONFIG_MOUSE_VSXXXAA is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set # CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_MISC is not set # # Hardware I/O ports # CONFIG_SERIO=y CONFIG_SERIO_I8042=y CONFIG_SERIO_SERPORT=y # CONFIG_SERIO_PCIPS2 is not set CONFIG_SERIO_LIBPS2=y # CONFIG_SERIO_RAW is not set # CONFIG_SERIO_XILINX_XPS_PS2 is not set # CONFIG_SERIO_ALTERA_PS2 is not set # CONFIG_GAMEPORT is not set # # Character devices # CONFIG_VT=y CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set CONFIG_DEVKMEM=y # CONFIG_SERIAL_NONSTANDARD is not set # # Serial drivers # # CONFIG_SERIAL_8250 is not set # # Non-8250 serial port support # # CONFIG_SERIAL_UARTLITE is not set # CONFIG_SERIAL_JSM 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 CONFIG_LEGACY_PTY_COUNT=256 # CONFIG_IPMI_HANDLER is not set # CONFIG_HW_RANDOM is not set # CONFIG_NVRAM is not set # CONFIG_GEN_RTC is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_RAW_DRIVER is not set CONFIG_DEVPORT=y # CONFIG_I2C is not set # CONFIG_SPI is not set # # PPS support # 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_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # # CONFIG_SSB is not set # # Multifunction device drivers # # CONFIG_MFD_CORE is not set # CONFIG_MFD_SM501 is not set # CONFIG_HTC_PASIC3 is not set # CONFIG_MFD_TMIO is not set # CONFIG_REGULATOR is not set # 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 is not set # CONFIG_FB is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set # # Display device support # # CONFIG_DISPLAY_SUPPORT is not set # # Console display driver support # CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set CONFIG_DUMMY_CONSOLE=y # CONFIG_SOUND is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set # CONFIG_MMC is not set # CONFIG_MEMSTICK is not set # CONFIG_NEW_LEDS is not set # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set # 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 # # File systems # # CONFIG_EXT2_FS is not set # CONFIG_EXT3_FS is not set # CONFIG_EXT4_FS is not set # CONFIG_REISERFS_FS is not set # CONFIG_JFS_FS is not set # CONFIG_FS_POSIX_ACL is not set # CONFIG_XFS_FS is not set CONFIG_FILE_LOCKING=y # CONFIG_FSNOTIFY is not set # CONFIG_DNOTIFY is not set # CONFIG_INOTIFY is not set # CONFIG_INOTIFY_USER is not set # CONFIG_QUOTA is not set # CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS4_FS is not set # CONFIG_FUSE_FS is not set # # Caches # # # CD-ROM/DVD Filesystems # # CONFIG_ISO9660_FS is not set # CONFIG_UDF_FS is not set # # DOS/FAT/NT Filesystems # # CONFIG_MSDOS_FS is not set # CONFIG_VFAT_FS is not set # CONFIG_NTFS_FS is not set # # Pseudo filesystems # CONFIG_PROC_FS=y # CONFIG_PROC_KCORE is not set CONFIG_PROC_SYSCTL=y CONFIG_PROC_PAGE_MONITOR=y CONFIG_SYSFS=y # CONFIG_TMPFS is not set # CONFIG_HUGETLB_PAGE is not set # CONFIG_CONFIGFS_FS is not set # CONFIG_MISC_FILESYSTEMS is not set # # Partition Types # # CONFIG_PARTITION_ADVANCED is not set CONFIG_MSDOS_PARTITION=y # CONFIG_NLS is not set # CONFIG_BINARY_PRINTF is not set # # Library routines # CONFIG_GENERIC_FIND_LAST_BIT=y # CONFIG_CRC_CCITT is not set # CONFIG_CRC16 is not set # CONFIG_CRC_T10DIF is not set # CONFIG_CRC_ITU_T is not set # CONFIG_CRC32 is not set # CONFIG_CRC7 is not set # CONFIG_LIBCRC32C is not set CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_DMA=y CONFIG_HAVE_LMB=y CONFIG_GENERIC_ATOMIC64=y # # Kernel hacking # CONFIG_PRINTK_TIME=y CONFIG_ENABLE_WARN_DEPRECATED=y CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=1024 # CONFIG_MAGIC_SYSRQ is not set # 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 # CONFIG_DEBUG_KERNEL is not set # CONFIG_SLUB_DEBUG_ON is not set # CONFIG_SLUB_STATS is not set CONFIG_DEBUG_BUGVERBOSE=y CONFIG_DEBUG_MEMORY_INIT=y CONFIG_RCU_CPU_STALL_DETECTOR=y # CONFIG_LATENCYTOP is not set # CONFIG_SYSCTL_SYSCALL_CHECK 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 CONFIG_TRACING_SUPPORT=y # CONFIG_FTRACE is not set # CONFIG_DMA_API_DEBUG is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_PPC_DISABLE_WERROR is not set CONFIG_PPC_WERROR=y CONFIG_PRINT_STACK_DEPTH=64 # CONFIG_IRQSTACKS is not set # CONFIG_PPC_EARLY_DEBUG is not set # # Security options # # CONFIG_KEYS is not set # CONFIG_SECURITY is not set # CONFIG_SECURITYFS 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 is not set # CONFIG_PPC_CLOCK is not set # CONFIG_VIRTUALIZATION is not set ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-07 6:50 cross-compiling Linux for PowerPC e200 core? Németh Márton @ 2010-03-08 17:34 ` Grant Likely 2010-03-08 18:44 ` Németh Márton 2010-03-08 17:47 ` cross-compiling Linux for PowerPC e200 core? Segher Boessenkool 1 sibling, 1 reply; 25+ messages in thread From: Grant Likely @ 2010-03-08 17:34 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev 2010/3/6 N=E9meth M=E1rton <nm127@freemail.hu>: > Hi, > > I'm trying to cross-compile Linux 2.6.33 for Freescale MPC5554 [1][2]. Th= is > microcontroller is based on the e200z6 core. I could build the cross-deve= lopment > tools, but I could miss something because I get an error message when bui= lding > Linux for PowerPC e200 core. Here are the steps I used: I doubt you'll have much luck with the mpc5554. Linux doesn't include any support for the MPC5554, and I don't think anybody is working on it. Any of the mpc5554 systems I've see don't have enough ram to run Linux well. g. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-08 17:34 ` Grant Likely @ 2010-03-08 18:44 ` Németh Márton 2010-03-08 19:08 ` Grant Likely 0 siblings, 1 reply; 25+ messages in thread From: Németh Márton @ 2010-03-08 18:44 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Grant Likely wrote: > 2010/3/6 Németh Márton <nm127@freemail.hu>: >> Hi, >> >> I'm trying to cross-compile Linux 2.6.33 for Freescale MPC5554 [1][2]. This >> microcontroller is based on the e200z6 core. I could build the cross-development >> tools, but I could miss something because I get an error message when building >> Linux for PowerPC e200 core. Here are the steps I used: > > I doubt you'll have much luck with the mpc5554. Linux doesn't include > any support for the MPC5554, and I don't think anybody is working on > it. Any of the mpc5554 systems I've see don't have enough ram to run > Linux well. I'm ready to work a bit more than just compiling the kernel and run it on MPC5554. On my target system there is a possibility to use external RAM connected to the External Bus Interface, so I don't see this would be a problem in my case. However, I have not much experience running Linux on PowerPC environment. Could you suggest a PowerPC port which would be a good starting point to make support for MPC5554? As far as I could find out I'll need to create a device tree as documented in the linux/Documentation/powerpc/booting-without-of.txt file. Regards, Márton Németh ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-08 18:44 ` Németh Márton @ 2010-03-08 19:08 ` Grant Likely 2010-03-09 7:02 ` Németh Márton 0 siblings, 1 reply; 25+ messages in thread From: Grant Likely @ 2010-03-08 19:08 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev 2010/3/8 N=E9meth M=E1rton <nm127@freemail.hu>: > Grant Likely wrote: >> 2010/3/6 N=E9meth M=E1rton <nm127@freemail.hu>: >>> Hi, >>> >>> I'm trying to cross-compile Linux 2.6.33 for Freescale MPC5554 [1][2]. = This >>> microcontroller is based on the e200z6 core. I could build the cross-de= velopment >>> tools, but I could miss something because I get an error message when b= uilding >>> Linux for PowerPC e200 core. Here are the steps I used: >> >> I doubt you'll have much luck with the mpc5554. =A0Linux doesn't include >> any support for the MPC5554, and I don't think anybody is working on >> it. =A0Any of the mpc5554 systems I've see don't have enough ram to run >> Linux well. > > I'm ready to work a bit more than just compiling the kernel and run it on= MPC5554. > On my target system there is a possibility to use external RAM connected = to the > External Bus Interface, so I don't see this would be a problem in my case= . > > However, I have not much experience running Linux on PowerPC environment.= Could > you suggest a PowerPC port which would be a good starting point to make s= upport > for MPC5554? I'd use the MPC5200 board support as a starting point (arch/powerpc/platforms/52xx). Create yourself a new directory for this platform (arch/powerpc/platforms/55xx) > As far as I could find out I'll need to create a device tree as documente= d in > the linux/Documentation/powerpc/booting-without-of.txt file. Yes, you'll need to create a device tree file for the board. Again, start from an existing 5200 .dts file. You won't need very much in it to get started. I'd be happy to help you get the structure right. g. --=20 Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-08 19:08 ` Grant Likely @ 2010-03-09 7:02 ` Németh Márton 2010-03-09 7:35 ` Grant Likely 0 siblings, 1 reply; 25+ messages in thread From: Németh Márton @ 2010-03-09 7:02 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Hi, Grant Likely wrote: > 2010/3/8 Németh Márton <nm127@freemail.hu>: >> Grant Likely wrote: >>> 2010/3/6 Németh Márton <nm127@freemail.hu>: >>>> Hi, >>>> >>>> I'm trying to cross-compile Linux 2.6.33 for Freescale MPC5554 [1][2]. This >>>> microcontroller is based on the e200z6 core. I could build the cross-development >>>> tools, but I could miss something because I get an error message when building >>>> Linux for PowerPC e200 core. Here are the steps I used: >>> I doubt you'll have much luck with the mpc5554. Linux doesn't include >>> any support for the MPC5554, and I don't think anybody is working on >>> it. Any of the mpc5554 systems I've see don't have enough ram to run >>> Linux well. >> I'm ready to work a bit more than just compiling the kernel and run it on MPC5554. >> On my target system there is a possibility to use external RAM connected to the >> External Bus Interface, so I don't see this would be a problem in my case. >> >> However, I have not much experience running Linux on PowerPC environment. Could >> you suggest a PowerPC port which would be a good starting point to make support >> for MPC5554? > > I'd use the MPC5200 board support as a starting point > (arch/powerpc/platforms/52xx). Create yourself a new directory for > this platform (arch/powerpc/platforms/55xx) > >> As far as I could find out I'll need to create a device tree as documented in >> the linux/Documentation/powerpc/booting-without-of.txt file. > > Yes, you'll need to create a device tree file for the board. Again, > start from an existing 5200 .dts file. You won't need very much in it > to get started. I'd be happy to help you get the structure right. I tried to create a first draft of the deveice tree for MPC5554. It is compilable with dtc. I based this .dts file on Figure 1-1 on page 1-3 and Table 1-2 on page 1-21 of http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf . I'm not sure about the following points: 1. Where should be the on-chip FLASH described? This memory is read-only from view of software and can be used to store read-only data or execute code directly from there. 2. Should the co-processor (eTPU in this case) also listed in section "cpus" or not? This co-processor is not able to run code like the e200z6. 3. There are three on-chip buses on MPC5554: - Crossbar Switch (XBAR) - Peripheral Bridge A (PBRIDGE_A) - Peripheral Bridge B (PBRIDGE_B) I used PBRIDGE_A and PRIDGE_B to create two /soc<SOCname> entries. Is this possible? 4. There are modules which have multiple instances at different base addresses. These are DSPI, SCI and FlexCAN. I used the same name for them but with different addresses. Is this correct? Regards, Márton Németh --- From: Márton Németh <nm127@freemail.hu> Add device tree for Freescale MPC5554. Signed-off-by: Márton Németh <nm127@freemail.hu> --- diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux/arch/powerpc/boot/dts/mpc5554.dts --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 +++ linux/arch/powerpc/boot/dts/mpc5554.dts 2010-03-09 07:40:46.000000000 +0100 @@ -0,0 +1,197 @@ +/* + * Freescale MPC5554 Device Tree Source + * + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf + * + * Copyright 2010 Márton Németh + * Márton Németh <nm127@freemail.hu> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC5554"; + compatible = "MPC5554"; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,5554@0 { + device_type = "cpu"; + reg = <0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <0x8000>; // L1, 32KiB + i-cache-size = <0x8000>; // L1, 32KiB + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + flash { // read-only FLASH + device_type = "memory"; + reg = <0x00000000 0x200000>; // 2MiB internal FLASH + }; + + memory { + device_type = "memory"; + reg = <0x40000000 0x10000>; // 32KiB internal SRAM + }; + + soc5554BridgeA@c0000000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc5554-bridgea"; + ranges = <0 0xc0000000 0x20000000>; + reg = <0xc0000000 0x20000000>; + bus-frequency = <0>; // from bootloader + system-frequency = <0>; // from bootloader + + bridgea@3f00000 { + compatible = "fsl,mpc5554-bridgea"; + reg = <0x03f00000 0x4000>; + }; + + fmpll@3f80000 { // Frequency Modulated PLL + compatible = "fsl,mpc5554-fmpll"; + reg = <0x03f80000 0x4000>; + }; + + flashconfig@3f88000 { // Flash Configuration + compatible = "fsl,mpc5554-flashconfig"; + reg = <0x03f88000 0x4000>; + }; + + siu@3f89000 { // System Integration Unit + compatible = "fsl,mpc5554-siu"; + reg = <0x03f90000 0x4000>; + }; + + emios@3fa0000 { // Modular Timer System + compatible = "fsl,mpc5554-emios"; + reg = <0x03fa0000 0x4000>; + }; + + etpu@3fc0000 { // Enhanced Time Processing Unit + compatible = "fsl,mpc5554-etpu"; + reg = <0x03fc0000 0x4000>; + }; + + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fc8000 0x4000>; + }; + + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fcc000 0x4000>; + }; + + etpucode@3fd0000 { // eTPU Shared Code RAM + compatible = "fsl,mpc5554-etpucode"; + reg = <0x03fd0000 0x4000>; + }; + }; + + soc5554BridgeB@e0000000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc5554-bridgeb"; + ranges = <0 0xe0000000 0x20000000>; + reg = <0xe0000000 0x20000000>; + bus-frequency = <0>; // from bootloader + system-frequency = <0>; // from bootloader + + bridgeb@1ff00000 { + compatible = "fsl,mpc5554-bridgeb"; + reg = <0x1ff00000 0x4000>; + }; + + xbar@1ff04000 { // System Bus Crossbar Switch (XBAR) + compatible = "fsl,mpc5554-xbar"; + reg = <0x1ff04000 0x4000>; + }; + + ecsm@1ff40000 { // Error Correction Status Module (ECSM) + compatible = "fsl,mpc5554-ecsm"; + reg = <0x1ff40000 0x4000>; + }; + + edma@1ff44000 { // Enhanced DMA Controller (eDMA) + compatible = "fsl,mpc5554-edma"; + reg = <0x1ff44000 0x4000>; + }; + + intc@1ff48000 { // Interrupt Controller (INTC) + compatible = "fsl,mpc5554-intc"; + reg = <0x1ff48000 0x4000>; + }; + + eqadc@1ff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) + compatible = "fsl,mpc5554-eqacd"; + reg = <0x1ff80000 0x4000>; + }; + + dspi@1ff90000 { // Deserial Serial Peripheral Interface (DSPI_A) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff90000 0x4000>; + }; + + dspi@1ff94000 { // Deserial Serial Peripheral Interface (DSPI_B) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff94000 0x4000>; + }; + + dspi@1ff98000 { // Deserial Serial Peripheral Interface (DSPI_C) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff98000 0x4000>; + }; + + dspi@1ff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff9c000 0x4000>; + }; + + sci@1ffb0000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-sci"; + reg = <0x1ffb0000 0x4000>; + }; + + sci@1ffb4000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-sci"; + reg = <0x1ffb4000 0x4000>; + }; + + can@1ffc0000 { // Controller Area Network (FlexCAN_A) + compatible = "fsl,mpc5554-flexcan"; + reg = <0x1ffc0000 0x4000>; + }; + + can@1ffc4000 { // Controller Area Network (FlexCAN_B) + compatible = "fsl,mpc5554-flexcan"; + reg = <0x1ffc4000 0x4000>; + }; + + can@1ffc8000 { // Controller Area Network (FlexCAN_C) + compatible = "fsl,mpc5554-flexcan"; + reg = <0x1ffc8000 0x4000>; + }; + + bam@1fffc000 { // Boot Assist Module (BAM) + compatible = "fsl,mpc5554-bam"; + reg = <0x1fffc000 0x4000>; + }; + + }; + +}; ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-09 7:02 ` Németh Márton @ 2010-03-09 7:35 ` Grant Likely 2010-03-11 6:11 ` Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) Németh Márton 0 siblings, 1 reply; 25+ messages in thread From: Grant Likely @ 2010-03-09 7:35 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev 2010/3/9 N=E9meth M=E1rton <nm127@freemail.hu>: > Hi, > Grant Likely wrote: >> 2010/3/8 N=E9meth M=E1rton <nm127@freemail.hu>: >>> Grant Likely wrote: >>>> 2010/3/6 N=E9meth M=E1rton <nm127@freemail.hu>: >>>>> Hi, >>>>> >>>>> I'm trying to cross-compile Linux 2.6.33 for Freescale MPC5554 [1][2]= . This >>>>> microcontroller is based on the e200z6 core. I could build the cross-= development >>>>> tools, but I could miss something because I get an error message when= building >>>>> Linux for PowerPC e200 core. Here are the steps I used: >>>> I doubt you'll have much luck with the mpc5554. =A0Linux doesn't inclu= de >>>> any support for the MPC5554, and I don't think anybody is working on >>>> it. =A0Any of the mpc5554 systems I've see don't have enough ram to ru= n >>>> Linux well. >>> I'm ready to work a bit more than just compiling the kernel and run it = on MPC5554. >>> On my target system there is a possibility to use external RAM connecte= d to the >>> External Bus Interface, so I don't see this would be a problem in my ca= se. >>> >>> However, I have not much experience running Linux on PowerPC environmen= t. Could >>> you suggest a PowerPC port which would be a good starting point to make= support >>> for MPC5554? >> >> I'd use the MPC5200 board support as a starting point >> (arch/powerpc/platforms/52xx). =A0Create yourself a new directory for >> this platform (arch/powerpc/platforms/55xx) >> >>> As far as I could find out I'll need to create a device tree as documen= ted in >>> the linux/Documentation/powerpc/booting-without-of.txt file. >> >> Yes, you'll need to create a device tree file for the board. =A0Again, >> start from an existing 5200 .dts file. =A0You won't need very much in it >> to get started. =A0I'd be happy to help you get the structure right. > > I tried to create a first draft of the deveice tree for MPC5554. It is > compilable with dtc. I based this .dts file on Figure 1-1 on page 1-3 and > Table 1-2 on page 1-21 of http://www.freescale.com/files/32bit/doc/ref_ma= nual/MPC5553_MPC5554_RM.pdf . > > I'm not sure about the following points: > 1. Where should be the on-chip FLASH described? This memory is read-only = from > =A0 view of software and can be used to store read-only data or execute c= ode directly > =A0 from there. Hang it off the xbar node. Name it flash@<address>, and use 'compatible =3D "fsl,mpc5554-flash";' > > 2. Should the co-processor (eTPU in this case) also listed in section "cp= us" > =A0 or not? This co-processor is not able to run code like the e200z6. No, this is a device. Hang it off the peripheral bridge a node. > 3. There are three on-chip buses on MPC5554: > =A0 - Crossbar Switch (XBAR) > =A0 - Peripheral Bridge A (PBRIDGE_A) > =A0 - Peripheral Bridge B (PBRIDGE_B) > =A0 I used PBRIDGE_A and PRIDGE_B to create two /soc<SOCname> entries. Is= this possible? the soc5200 naming was poorly chosen when the 5200 device tree was written. Use something like this: xbar@<control-regs-base-address> { compatible =3D "fsl,mpc5554-xbar"; #address-cells =3D <1>; #size-cells =3D <1>; ranges =3D <[put the translation ranges in here]>; reg =3D <address and size of xbar control registers>; bridge@<bridgea-base-address> { compatible =3D "fsl,mpc5554-pbridge-a"; #address-cells =3D <1>; #size-cells =3D <1>; ranges =3D <[put the translation ranges in here]>; reg =3D <address and size of bridge control registers>; [... child device nodes ...] }; bridge@<bridgea-base-address> { compatible =3D "fsl,mpc5554-pbridge-b"; #address-cells =3D <1>; #size-cells =3D <1>; ranges =3D <[put the translation ranges in here]>; reg =3D <address and size of bridge control registers>; [... child device nodes ...] }; }; The idea is to use generic names for the node names, and identify exactly what the device is by using the "compatible" property. Also, the aim is to build up a tree describing the interconnection of device from the perspective of the OS on the CPU. ie. the full physical address space is represented by the root node of the tree, and everything else hangs off that. > 4. There are modules which have multiple instances at different base addr= esses. These > =A0 are DSPI, SCI and FlexCAN. I used the same name for them but with dif= ferent addresses. > =A0 Is this correct? yes. > +/ { > + =A0 =A0 =A0 model =3D "MPC5554"; > + =A0 =A0 =A0 compatible =3D "MPC5554"; Use the board name here in the form "<manufacturer>,<board>", not the SoC n= ame. > + =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 #size-cells =3D <1>; > + > + =A0 =A0 =A0 cpus { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #size-cells =3D <0>; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 PowerPC,5554@0 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 device_type =3D "cpu"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 d-cache-line-size =3D <32>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 i-cache-line-size =3D <32>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 d-cache-size =3D <0x8000>; = =A0 =A0 =A0 =A0// L1, 32KiB > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 i-cache-size =3D <0x8000>; = =A0 =A0 =A0 =A0// L1, 32KiB > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 timebase-frequency =3D <0>;= =A0 =A0 =A0 // from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 bus-frequency =3D <0>; =A0 = =A0 =A0 =A0 =A0 =A0// from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 clock-frequency =3D <0>; = =A0 =A0 =A0 =A0 =A0// from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 flash { // read-only FLASH flash@0 > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 device_type =3D "memory"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x00000000 0x200000>; =A0 =A0// 2M= iB internal FLASH > + =A0 =A0 =A0 }; remove device_type from this node. Only a few special nodes should have device_type. Make the flash node a child of the xbar node. > + > + =A0 =A0 =A0 memory { memory@400000000 > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 device_type =3D "memory"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x40000000 0x10000>; =A0 =A0 // 32= KiB internal SRAM > + =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 soc5554BridgeA@c0000000 { bridge@c0000000 Make this node a child of the xbar node. > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #size-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554-bridgea"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 ranges =3D <0 0xc0000000 0x20000000>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0xc0000000 0x20000000>; The reg property here should only cover the bridge's control register. Not the whole range of the bridge. > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 bus-frequency =3D <0>; =A0 =A0 =A0 =A0 =A0 = =A0// from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 system-frequency =3D <0>; =A0 =A0 =A0 =A0 /= / from bootloader > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 bridgea@3f00000 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -bridgea"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03f00000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 fmpll@3f80000 { =A0 =A0 =A0 =A0 // Frequenc= y Modulated PLL > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -fmpll"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03f80000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 flashconfig@3f88000 { =A0 // Flash Configur= ation > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -flashconfig"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03f88000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 siu@3f89000 { =A0 =A0 =A0 =A0 =A0 // System= Integration Unit > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -siu"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03f90000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 emios@3fa0000 { =A0 =A0 =A0 =A0 // Modular = Timer System > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -emios"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03fa0000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 etpu@3fc0000 { =A0 =A0 =A0 =A0 =A0// Enhanc= ed Time Processing Unit > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -etpu"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03fc0000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 etpudata@3fc8000 { =A0 =A0 =A0// eTPU Share= d Data Memory (Parameter RAM) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -etpudata"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03fc8000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 etpudata@3fcc000 { =A0 =A0 =A0// eTPU Share= d Data Memory (Parameter RAM) mirror > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -etpudata"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03fcc000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 etpucode@3fd0000 { =A0 =A0 =A0 =A0 =A0 =A0 = =A0// eTPU Shared Code RAM > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -etpucode"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x03fd0000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 soc5554BridgeB@e0000000 { bridge@e0000000 > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #size-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554-bridgeb"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 ranges =3D <0 0xe0000000 0x20000000>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0xe0000000 0x20000000>; ditto on comment from bridge a > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 bus-frequency =3D <0>; =A0 =A0 =A0 =A0 =A0 = =A0// from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 system-frequency =3D <0>; =A0 =A0 =A0 =A0 /= / from bootloader > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 bridgeb@1ff00000 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -bridgeb"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff00000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 xbar@1ff04000 { =A0 =A0 =A0 =A0 // System B= us Crossbar Switch (XBAR) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -xbar"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff04000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; The block diagram seems to suggest that the xbar should be the root of the tree, and the peripheral bridges should be children of it. > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 ecsm@1ff40000 { =A0 =A0 =A0 =A0 // Error Co= rrection Status Module (ECSM) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -ecsm"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff40000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 edma@1ff44000 { =A0 =A0 =A0 =A0 // Enhanced= DMA Controller (eDMA) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -edma"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff44000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 intc@1ff48000 { =A0 =A0 =A0 =A0 // Interrup= t Controller (INTC) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -intc"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff48000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 eqadc@1ff80000 { =A0 =A0 =A0 =A0// Enhanced= Queued Analog-to-Digital Converter (eQADC) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -eqacd"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff80000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 dspi@1ff90000 { =A0 =A0 =A0 =A0 // Deserial= Serial Peripheral Interface (DSPI_A) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -dspi"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff90000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 dspi@1ff94000 { =A0 =A0 =A0 =A0 // Deserial= Serial Peripheral Interface (DSPI_B) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -dspi"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff94000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 dspi@1ff98000 { =A0 =A0 =A0 =A0 // Deserial= Serial Peripheral Interface (DSPI_C) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -dspi"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff98000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 dspi@1ff9c000 { =A0 =A0 =A0 =A0 // Deserial= Serial Peripheral Interface (DSPI_D) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -dspi"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ff9c000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 sci@1ffb0000 { =A0 =A0 =A0 =A0 =A0// Serial= Communications Interface (SCI_A) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -sci"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ffb0000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 sci@1ffb4000 { =A0 =A0 =A0 =A0 =A0// Serial= Communications Interface (SCI_A) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -sci"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ffb4000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 can@1ffc0000 { =A0 =A0 =A0 =A0 =A0// Contro= ller Area Network (FlexCAN_A) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -flexcan"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ffc0000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 can@1ffc4000 { =A0 =A0 =A0 =A0 =A0// Contro= ller Area Network (FlexCAN_B) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -flexcan"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ffc4000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 can@1ffc8000 { =A0 =A0 =A0 =A0 =A0// Contro= ller Area Network (FlexCAN_C) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -flexcan"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1ffc8000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 bam@1fffc000 { =A0 =A0 =A0 =A0 =A0// Boot A= ssist Module (BAM) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -bam"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x1fffc000 0x4000>= ; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 }; > + > +}; > > --=20 Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-09 7:35 ` Grant Likely @ 2010-03-11 6:11 ` Németh Márton 2010-03-11 6:23 ` David Gibson 0 siblings, 1 reply; 25+ messages in thread From: Németh Márton @ 2010-03-11 6:11 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Grant Likely wrote: > 2010/3/9 Németh Márton <nm127@freemail.hu>: >> Hi, >> Grant Likely wrote: >>> 2010/3/8 Németh Márton <nm127@freemail.hu>: [snip] >>>> As far as I could find out I'll need to create a device tree as documented in >>>> the linux/Documentation/powerpc/booting-without-of.txt file. >>> Yes, you'll need to create a device tree file for the board. Again, >>> start from an existing 5200 .dts file. You won't need very much in it >>> to get started. I'd be happy to help you get the structure right. >> I tried to create a first draft of the deveice tree for MPC5554. It is >> compilable with dtc. I based this .dts file on Figure 1-1 on page 1-3 and >> Table 1-2 on page 1-21 of http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf . >> >> I'm not sure about the following points: >> 1. Where should be the on-chip FLASH described? This memory is read-only from >> view of software and can be used to store read-only data or execute code directly >> from there. > > Hang it off the xbar node. Name it flash@<address>, and use > 'compatible = "fsl,mpc5554-flash";' > >> 2. Should the co-processor (eTPU in this case) also listed in section "cpus" >> or not? This co-processor is not able to run code like the e200z6. > > No, this is a device. Hang it off the peripheral bridge a node. > >> 3. There are three on-chip buses on MPC5554: >> - Crossbar Switch (XBAR) >> - Peripheral Bridge A (PBRIDGE_A) >> - Peripheral Bridge B (PBRIDGE_B) >> I used PBRIDGE_A and PRIDGE_B to create two /soc<SOCname> entries. Is this possible? > > the soc5200 naming was poorly chosen when the 5200 device tree was > written. Use something like this: > > xbar@<control-regs-base-address> { > compatible = "fsl,mpc5554-xbar"; > #address-cells = <1>; > #size-cells = <1>; > ranges = <[put the translation ranges in here]>; > reg = <address and size of xbar control registers>; > > bridge@<bridgea-base-address> { > compatible = "fsl,mpc5554-pbridge-a"; > #address-cells = <1>; > #size-cells = <1>; > ranges = <[put the translation ranges in here]>; > reg = <address and size of bridge control registers>; > [... child device nodes ...] > }; > bridge@<bridgea-base-address> { > compatible = "fsl,mpc5554-pbridge-b"; > #address-cells = <1>; > #size-cells = <1>; > ranges = <[put the translation ranges in here]>; > reg = <address and size of bridge control registers>; > [... child device nodes ...] > }; > }; > > The idea is to use generic names for the node names, and identify > exactly what the device is by using the "compatible" property. Also, > the aim is to build up a tree describing the interconnection of device > from the perspective of the OS on the CPU. ie. the full physical > address space is represented by the root node of the tree, and > everything else hangs off that. > >> 4. There are modules which have multiple instances at different base addresses. These >> are DSPI, SCI and FlexCAN. I used the same name for them but with different addresses. >> Is this correct? > > yes. [snip] Here is the next draft version of the Freescale MPC5554 device tree. I'm not quite sure whether the memory@40000000 should go under xbar or stay directly under the root node. The second problem I faced with was that XBAR covers the whole address range. However, if I specify "ranges = <0 0x00000000 0x100000000>;" then I get an error message because of the too big length value: | DTC: dts->dts on file "/usr/src/linux/arch/powerpc/boot/dts/mpc5554.dts" | /usr/src/linux/arch/powerpc/boot/dts/mpc5554.dts:51 literal out of range | FATAL ERROR: Syntax error parsing input tree I tried to solve this problem by assuming that leaving out the "ranges = ..." means the whole range. Is this correct? Regards, Márton Németh --- From: Márton Németh <nm127@freemail.hu> Add device tree for Freescale MPC5554. Signed-off-by: Márton Németh <nm127@freemail.hu> --- diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux/arch/powerpc/boot/dts/mpc5554.dts --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 +++ linux/arch/powerpc/boot/dts/mpc5554.dts 2010-03-11 07:01:29.000000000 +0100 @@ -0,0 +1,188 @@ +/* + * Freescale MPC5554 Device Tree Source + * + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf + * + * Copyright 2010 Márton Németh + * Márton Németh <nm127@freemail.hu> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC5554"; + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,5554@0 { + device_type = "cpu"; + reg = <0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <0x8000>; // L1, 32KiB + i-cache-size = <0x8000>; // L1, 32KiB + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory@40000000 { + device_type = "memory"; + reg = <0x40000000 0x10000>; // 32KiB internal SRAM + }; + + xbar@1ff04000 { // System Bus Crossbar Switch (XBAR) + compatible = "fsl,mpc5554-xbar"; + #address-cells = <1>; + #size-cells = <1>; + // The full memory range is covered by XBAR +// ranges = <0 0x00000000 0x100000000>; + reg = <0xfff04000 0x4000>; + + flash@00000000 { // read-only FLASH + compatible = "fsl,mpc5554-flash"; + reg = <0x00000000 0x200000>; // 2MiB internal FLASH + }; + + bridge@c0000000 { + compatible = "fsl,mpc5554-pbridge-a"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xc0000000 0x20000000>; + reg = <0xc3f00000 0x4000>; + + fmpll@3f80000 { // Frequency Modulated PLL + compatible = "fsl,mpc5554-fmpll"; + reg = <0x03f80000 0x4000>; + }; + + flashconfig@3f88000 { // Flash Configuration + compatible = "fsl,mpc5554-flashconfig"; + reg = <0x03f88000 0x4000>; + }; + + siu@3f89000 { // System Integration Unit + compatible = "fsl,mpc5554-siu"; + reg = <0x03f90000 0x4000>; + }; + + emios@3fa0000 { // Modular Timer System + compatible = "fsl,mpc5554-emios"; + reg = <0x03fa0000 0x4000>; + }; + + etpu@3fc0000 { // Enhanced Time Processing Unit + compatible = "fsl,mpc5554-etpu"; + reg = <0x03fc0000 0x4000>; + }; + + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fc8000 0x4000>; + }; + + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fcc000 0x4000>; + }; + + etpucode@3fd0000 { // eTPU Shared Code RAM + compatible = "fsl,mpc5554-etpucode"; + reg = <0x03fd0000 0x4000>; + }; + }; + + bridge@e0000000 { + compatible = "fsl,mpc5554-pbridge-b"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xe0000000 0x20000000>; + reg = <0xfff00000 0x4000>; + + ecsm@1ff40000 { // Error Correction Status Module (ECSM) + compatible = "fsl,mpc5554-ecsm"; + reg = <0x1ff40000 0x4000>; + }; + + edma@1ff44000 { // Enhanced DMA Controller (eDMA) + compatible = "fsl,mpc5554-edma"; + reg = <0x1ff44000 0x4000>; + }; + + intc@1ff48000 { // Interrupt Controller (INTC) + compatible = "fsl,mpc5554-intc"; + reg = <0x1ff48000 0x4000>; + }; + + eqadc@1ff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) + compatible = "fsl,mpc5554-eqacd"; + reg = <0x1ff80000 0x4000>; + }; + + dspi@1ff90000 { // Deserial Serial Peripheral Interface (DSPI_A) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff90000 0x4000>; + }; + + dspi@1ff94000 { // Deserial Serial Peripheral Interface (DSPI_B) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff94000 0x4000>; + }; + + dspi@1ff98000 { // Deserial Serial Peripheral Interface (DSPI_C) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff98000 0x4000>; + }; + + dspi@1ff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) + compatible = "fsl,mpc5554-dspi"; + reg = <0x1ff9c000 0x4000>; + }; + + sci@1ffb0000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-sci"; + reg = <0x1ffb0000 0x4000>; + }; + + sci@1ffb4000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-sci"; + reg = <0x1ffb4000 0x4000>; + }; + + can@1ffc0000 { // Controller Area Network (FlexCAN_A) + compatible = "fsl,mpc5554-flexcan"; + reg = <0x1ffc0000 0x4000>; + }; + + can@1ffc4000 { // Controller Area Network (FlexCAN_B) + compatible = "fsl,mpc5554-flexcan"; + reg = <0x1ffc4000 0x4000>; + }; + + can@1ffc8000 { // Controller Area Network (FlexCAN_C) + compatible = "fsl,mpc5554-flexcan"; + reg = <0x1ffc8000 0x4000>; + }; + + bam@1fffc000 { // Boot Assist Module (BAM) + compatible = "fsl,mpc5554-bam"; + reg = <0x1fffc000 0x4000>; + }; + + }; + + }; + +}; ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-11 6:11 ` Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) Németh Márton @ 2010-03-11 6:23 ` David Gibson 2010-03-12 6:26 ` Németh Márton 0 siblings, 1 reply; 25+ messages in thread From: David Gibson @ 2010-03-11 6:23 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev On Thu, Mar 11, 2010 at 07:11:56AM +0100, Németh Márton wrote: [snip] > +/dts-v1/; > + > +/ { > + model = "MPC5554"; > + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board > + #address-cells = <1>; > + #size-cells = <1>; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + > + PowerPC,5554@0 { Modern best practice is to have the cpu nodes named just "cpu@XXX", and put the PowerPC,NNNN into the compatible property. > + device_type = "cpu"; > + reg = <0>; > + d-cache-line-size = <32>; > + i-cache-line-size = <32>; > + d-cache-size = <0x8000>; // L1, 32KiB > + i-cache-size = <0x8000>; // L1, 32KiB > + timebase-frequency = <0>; // from bootloader > + bus-frequency = <0>; // from bootloader > + clock-frequency = <0>; // from bootloader > + }; > + }; > + > + memory@40000000 { > + device_type = "memory"; > + reg = <0x40000000 0x10000>; // 32KiB internal SRAM > + }; > + > + xbar@1ff04000 { // System Bus Crossbar Switch (XBAR) > + compatible = "fsl,mpc5554-xbar"; > + #address-cells = <1>; > + #size-cells = <1>; > + // The full memory range is covered by XBAR > +// ranges = <0 0x00000000 0x100000000>; If you want all addresses to be translated by the bus you need an empty ranges property, not *no* ranges property. No ranges property indicates that addresses cannot be directly translated across the bridge, which is not, I think, what you intend. > + reg = <0xfff04000 0x4000>; The unit address '@1ff04000' does not match your reg property 0xfff04000. > + > + flash@00000000 { // read-only FLASH Unit addresses are not 0 padded, so this should be just 'flash@0'. > + compatible = "fsl,mpc5554-flash"; > + reg = <0x00000000 0x200000>; // 2MiB internal FLASH > + }; > + > + bridge@c0000000 { > + compatible = "fsl,mpc5554-pbridge-a"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0 0xc0000000 0x20000000>; > + reg = <0xc3f00000 0x4000>; The unit address is based on 'reg' (if present) not ranges, so it should be bridge@c3f00000. Likewise for the other bridge below. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-11 6:23 ` David Gibson @ 2010-03-12 6:26 ` Németh Márton 2010-03-12 12:14 ` Grant Likely 0 siblings, 1 reply; 25+ messages in thread From: Németh Márton @ 2010-03-12 6:26 UTC (permalink / raw) To: David Gibson, Grant Likely; +Cc: linuxppc-dev Hi, thank you for the comments, I reworked the Freescale MPC5554 device tree accordingly. I'm listening for comments on this draft. Regards, Márton Németh --- From: Márton Németh <nm127@freemail.hu> Add device tree for Freescale MPC5554. Signed-off-by: Márton Németh <nm127@freemail.hu> --- diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux/arch/powerpc/boot/dts/mpc5554.dts --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 +++ linux/arch/powerpc/boot/dts/mpc5554.dts 2010-03-12 07:22:37.000000000 +0100 @@ -0,0 +1,189 @@ +/* + * Freescale MPC5554 Device Tree Source + * + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf + * + * Copyright 2010 Márton Németh + * Márton Németh <nm127@freemail.hu> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC5554"; + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "PowerPC,5554"; + reg = <0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <0x8000>; // L1, 32KiB + i-cache-size = <0x8000>; // L1, 32KiB + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory@40000000 { + device_type = "memory"; + reg = <0x40000000 0x10000>; // 32KiB internal SRAM + }; + + xbar@fff04000 { // System Bus Crossbar Switch (XBAR) + compatible = "fsl,mpc5554-xbar"; + #address-cells = <1>; + #size-cells = <1>; + // The full memory range is covered by XBAR + ranges = <>; + reg = <0xfff04000 0x4000>; + + flash@0 { // read-only FLASH + compatible = "fsl,mpc5554-flash"; + reg = <0x00000000 0x200000>; // 2MiB internal FLASH + }; + + bridge@c3f00000 { + compatible = "fsl,mpc5554-pbridge-a"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xc0000000 0x20000000>; + reg = <0xc3f00000 0x4000>; + + fmpll@3f80000 { // Frequency Modulated PLL + compatible = "fsl,mpc5554-fmpll"; + reg = <0x03f80000 0x4000>; + }; + + flashconfig@3f88000 { // Flash Configuration + compatible = "fsl,mpc5554-flashconfig"; + reg = <0x03f88000 0x4000>; + }; + + siu@3f89000 { // System Integration Unit + compatible = "fsl,mpc5554-siu"; + reg = <0x03f90000 0x4000>; + }; + + emios@3fa0000 { // Modular Timer System + compatible = "fsl,mpc5554-emios"; + reg = <0x03fa0000 0x4000>; + }; + + etpu@3fc0000 { // Enhanced Time Processing Unit + compatible = "fsl,mpc5554-etpu"; + reg = <0x03fc0000 0x4000>; + }; + + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fc8000 0x4000>; + }; + + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fcc000 0x4000>; + }; + + etpucode@3fd0000 { // eTPU Shared Code RAM + compatible = "fsl,mpc5554-etpucode"; + reg = <0x03fd0000 0x4000>; + }; + }; + + bridge@fff00000 { + compatible = "fsl,mpc5554-pbridge-b"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xe0000000 0x20000000>; + reg = <0xfff00000 0x4000>; + + ecsm@fff40000 { // Error Correction Status Module (ECSM) + compatible = "fsl,mpc5554-ecsm"; + reg = <0xfff40000 0x4000>; + }; + + edma@fff44000 { // Enhanced DMA Controller (eDMA) + compatible = "fsl,mpc5554-edma"; + reg = <0xfff44000 0x4000>; + }; + + intc@fff48000 { // Interrupt Controller (INTC) + compatible = "fsl,mpc5554-intc"; + reg = <0xfff48000 0x4000>; + }; + + eqadc@fff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) + compatible = "fsl,mpc5554-eqacd"; + reg = <0xfff80000 0x4000>; + }; + + dspi@fff90000 { // Deserial Serial Peripheral Interface (DSPI_A) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff90000 0x4000>; + }; + + dspi@fff94000 { // Deserial Serial Peripheral Interface (DSPI_B) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff94000 0x4000>; + }; + + dspi@fff98000 { // Deserial Serial Peripheral Interface (DSPI_C) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff98000 0x4000>; + }; + + dspi@fff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff9c000 0x4000>; + }; + + sci@fffb0000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-sci"; + reg = <0xfffb0000 0x4000>; + }; + + sci@fffb4000 { // Serial Communications Interface (SCI_B) + compatible = "fsl,mpc5554-sci"; + reg = <0xfffb4000 0x4000>; + }; + + can@fffc0000 { // Controller Area Network (FlexCAN_A) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc0000 0x4000>; + }; + + can@fffc4000 { // Controller Area Network (FlexCAN_B) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc4000 0x4000>; + }; + + can@fffc8000 { // Controller Area Network (FlexCAN_C) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc8000 0x4000>; + }; + + bam@ffffc000 { // Boot Assist Module (BAM) + compatible = "fsl,mpc5554-bam"; + reg = <0xffffc000 0x4000>; + }; + + }; + + }; + +}; ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-12 6:26 ` Németh Márton @ 2010-03-12 12:14 ` Grant Likely 2010-03-12 22:36 ` David Gibson 2010-03-13 11:59 ` Németh Márton 0 siblings, 2 replies; 25+ messages in thread From: Grant Likely @ 2010-03-12 12:14 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev, David Gibson 2010/3/11 N=E9meth M=E1rton <nm127@freemail.hu>: > Hi, > > thank you for the comments, I reworked the Freescale MPC5554 device tree > accordingly. I'm listening for comments on this draft. > > Regards, > > =A0 =A0 =A0 =A0M=E1rton N=E9meth > > --- > From: M=E1rton N=E9meth <nm127@freemail.hu> > > Add device tree for Freescale MPC5554. > > Signed-off-by: M=E1rton N=E9meth <nm127@freemail.hu> > --- > diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux/arch= /powerpc/boot/dts/mpc5554.dts > --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:= 00.000000000 +0100 > +++ linux/arch/powerpc/boot/dts/mpc5554.dts =A0 =A0 2010-03-12 07:22:37.0= 00000000 +0100 > @@ -0,0 +1,189 @@ > +/* > + * Freescale MPC5554 Device Tree Source > + * > + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/= 2007 > + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_R= M.pdf > + * > + * Copyright 2010 M=E1rton N=E9meth > + * M=E1rton N=E9meth <nm127@freemail.hu> > + * > + * This program is free software; you can redistribute =A0it and/or modi= fy it > + * under =A0the terms of =A0the GNU General =A0Public License as publish= ed by the > + * Free Software Foundation; =A0either version 2 of the =A0License, or (= at your > + * option) any later version. > + */ > + > +/dts-v1/; > + > +/ { > + =A0 =A0 =A0 model =3D "MPC5554"; > + =A0 =A0 =A0 compatible =3D "fsl,MPC5554EVB"; =A0 =A0 =A0 =A0 =A0// Free= scale MPC5554 Evaluation Board > + =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 #size-cells =3D <1>; also need: interrupt-parent =3D <&intc>; I describe why later... > + > + =A0 =A0 =A0 cpus { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #size-cells =3D <0>; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 cpu@0 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 device_type =3D "cpu"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "PowerPC,555= 4"; I'd rather see the same convention used here as for all the other compatible values in this file. ie: compatible =3D "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; Dave, what do you think? > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 d-cache-line-size =3D <32>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 i-cache-line-size =3D <32>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 d-cache-size =3D <0x8000>; = =A0 =A0 =A0 =A0// L1, 32KiB > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 i-cache-size =3D <0x8000>; = =A0 =A0 =A0 =A0// L1, 32KiB > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 timebase-frequency =3D <0>;= =A0 =A0 =A0 // from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 bus-frequency =3D <0>; =A0 = =A0 =A0 =A0 =A0 =A0// from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 clock-frequency =3D <0>; = =A0 =A0 =A0 =A0 =A0// from bootloader > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 memory@40000000 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 device_type =3D "memory"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x40000000 0x10000>; =A0 =A0 // 32= KiB internal SRAM > + =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 xbar@fff04000 { =A0 =A0 =A0 =A0 // System Bus Crossbar Swit= ch (XBAR) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554-xbar"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #size-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 // The full memory range is covered by XBAR > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 ranges =3D <>; An empty ranges property looks like this: ranges; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 bridge@fff00000 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "fsl,mpc5554= -pbridge-b"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 #address-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 #size-cells =3D <1>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ranges =3D <0 0xe0000000 0x= 20000000>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0xfff00000 0x4000>= ; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ecsm@fff40000 { =A0 =A0 =A0= =A0 // Error Correction Status Module (ECSM) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible = =3D "fsl,mpc5554-ecsm"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x= fff40000 0x4000>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 edma@fff44000 { =A0 =A0 =A0= =A0 // Enhanced DMA Controller (eDMA) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible = =3D "fsl,mpc5554-edma"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x= fff44000 0x4000>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; > + > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 intc@fff48000 { =A0 =A0 =A0= =A0 // Interrupt Controller (INTC) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible = =3D "fsl,mpc5554-intc"; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x= fff48000 0x4000>; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; Need a label on this node so that the rest of the tree can find it, and it needs the interrupt-controller and #interrupt-cells properties: intc: intc@fff48000 { // Interrupt Controller (INTC) compatible =3D "fsl,mpc5554-intc"; interrupt-controller; #interrupt-cells =3D <2>; reg =3D <0xfff48000 0x4000>; }; I've set #interrupt-cells to 2 which is fairly typical on fsl parts, but that may or may not make sense. You need to decide how each device is going to specify it's interrupt line. Often the first cell is the hardware interrupt number, and the second cell encodes the sense (high, low, edge). Conversely, PCI interrupts only use #interrupt-cells =3D <1> because all PCI irqs use the active low sense. Then, each device in the tree should have an 'interrupts =3D < [hwirq#] [sense]>;' property. Otherwise, starting to look pretty good. g. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-12 12:14 ` Grant Likely @ 2010-03-12 22:36 ` David Gibson 2010-03-12 23:04 ` Grant Likely 2010-03-13 3:21 ` Segher Boessenkool 2010-03-13 11:59 ` Németh Márton 1 sibling, 2 replies; 25+ messages in thread From: David Gibson @ 2010-03-12 22:36 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev, Németh Márton On Fri, Mar 12, 2010 at 05:14:56AM -0700, Grant Likely wrote: > 2010/3/11 Németh Márton <nm127@freemail.hu>: [snip] > > + > > + cpus { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + cpu@0 { > > + device_type = "cpu"; > > + compatible = "PowerPC,5554"; > > I'd rather see the same convention used here as for all the other > compatible values in this file. ie: > > compatible = "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; > > Dave, what do you think? Well, you could add those too, but "PowerPC,5554" should probably remain. The historical background here is that in the original OF spec, driver matching was done on node name, and only then on compatible. Essentially the node name was treated as an implicit first entry in the compatible list. The the generic names convention came along, and instead name became a human readable generic type for the device ("ethernet", "i2c", etc..). That convention has been widely used since long before flat trees existed, but for some reason it was never really used for cpu nodes; they remained as "PowerPC,XXXX" or whatever. Because the varying names of cpu nodes was sometimes awkward to deal with in bootloaders, we decided it would be sensible to apply the generic names convention here too, so "cpu@X". But then, the previous node name, which was treated as being prepended to compatible, should now explicitly be put into compatible. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-12 22:36 ` David Gibson @ 2010-03-12 23:04 ` Grant Likely 2010-03-13 3:22 ` Segher Boessenkool 2010-03-13 3:21 ` Segher Boessenkool 1 sibling, 1 reply; 25+ messages in thread From: Grant Likely @ 2010-03-12 23:04 UTC (permalink / raw) To: Grant Likely, Németh Márton, linuxppc-dev On Fri, Mar 12, 2010 at 3:36 PM, David Gibson <david@gibson.dropbear.id.au> wrote: > On Fri, Mar 12, 2010 at 05:14:56AM -0700, Grant Likely wrote: >> 2010/3/11 N=E9meth M=E1rton <nm127@freemail.hu>: > [snip] >> > + >> > + =A0 =A0 =A0 cpus { >> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #address-cells =3D <1>; >> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 #size-cells =3D <0>; >> > + >> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 cpu@0 { >> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 device_type =3D "cpu"; >> > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatible =3D "PowerPC,= 5554"; >> >> I'd rather see the same convention used here as for all the other >> compatible values in this file. =A0ie: >> >> compatible =3D "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; >> >> Dave, what do you think? > > Well, you could add those too, but "PowerPC,5554" should probably > remain. > > The historical background here is that in the original OF spec, driver > matching was done on node name, and only then on compatible. > Essentially the node name was treated as an implicit first entry in > the compatible list. =A0The the generic names convention came along, and > instead name became a human readable generic type for the device > ("ethernet", "i2c", etc..). > > That convention has been widely used since long before flat trees > existed, but for some reason it was never really used for cpu nodes; > they remained as "PowerPC,XXXX" or whatever. =A0Because the varying > names of cpu nodes was sometimes awkward to deal with in bootloaders, > we decided it would be sensible to apply the generic names convention > here too, so "cpu@X". =A0But then, the previous node name, which was > treated as being prepended to compatible, should now explicitly be put > into compatible. In this particular case, we're talking about a part that has never previously been described in a device tree. So, since this is something entirely new, what is the value in preserving the PowerPC,XXXX style when there isn't any code that will be relying on it? g. --=20 Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-12 23:04 ` Grant Likely @ 2010-03-13 3:22 ` Segher Boessenkool 0 siblings, 0 replies; 25+ messages in thread From: Segher Boessenkool @ 2010-03-13 3:22 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev, Németh Márton > In this particular case, we're talking about a part that has never > previously been described in a device tree. So, since this is > something entirely new, what is the value in preserving the > PowerPC,XXXX style when there isn't any code that will be relying on > it? There could be code that matches anything starting with "PowerPC,". Also, consistency is a good thing no matter what. Segher ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-12 22:36 ` David Gibson 2010-03-12 23:04 ` Grant Likely @ 2010-03-13 3:21 ` Segher Boessenkool 1 sibling, 0 replies; 25+ messages in thread From: Segher Boessenkool @ 2010-03-13 3:21 UTC (permalink / raw) To: Grant Likely, Németh Márton, linuxppc-dev > The historical background here is that in the original OF spec, driver > matching was done on node name, and only then on compatible. > Essentially the node name was treated as an implicit first entry in > the compatible list. The the generic names convention came along, and > instead name became a human readable generic type for the device > ("ethernet", "i2c", etc..). Even with the generic names recommended practice, matching is _still_ done on "name" first, and only then "compatible". It isn't expected that anything will try to match one the generic names, so for "new style" nodes that in effect means matching on "compatible" only, but it is important for compatibility. > That convention has been widely used since long before flat trees > existed, but for some reason it was never really used for cpu nodes; > they remained as "PowerPC,XXXX" or whatever. The PowerPC binding was not updated for generic names. > Because the varying > names of cpu nodes was sometimes awkward to deal with in bootloaders, > we decided it would be sensible to apply the generic names convention > here too, so "cpu@X". But then, the previous node name, which was > treated as being prepended to compatible, should now explicitly be put > into compatible. Yes. Segher ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-12 12:14 ` Grant Likely 2010-03-12 22:36 ` David Gibson @ 2010-03-13 11:59 ` Németh Márton 2010-03-17 18:12 ` Németh Márton 2010-03-17 19:02 ` Grant Likely 1 sibling, 2 replies; 25+ messages in thread From: Németh Márton @ 2010-03-13 11:59 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Development, David Gibson Hi, here is a version with modified cpu node, xbar ranges and added interrupt sources. Please send comments. Regards, Márton Németh --- From: Márton Németh <nm127@freemail.hu> Add device tree for Freescale MPC5554. Signed-off-by: Márton Németh <nm127@freemail.hu> --- diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux/arch/powerpc/boot/dts/mpc5554.dts --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 +++ linux/arch/powerpc/boot/dts/mpc5554.dts 2010-03-13 12:52:32.000000000 +0100 @@ -0,0 +1,473 @@ +/* + * Freescale MPC5554 Device Tree Source + * + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf + * - Block Diagram: page 1-3, Figure 1-1 + * - Memory Map: page 1-21, Table 1-2 + * - Interrupt Request Sources: page 10-16, Table 10-9 + * + * Copyright 2010 Márton Németh + * Márton Németh <nm127@freemail.hu> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC5554"; + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&intc>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "PowerPC,5554", "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; + reg = <0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <0x8000>; // L1, 32KiB + i-cache-size = <0x8000>; // L1, 32KiB + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory@40000000 { + device_type = "memory"; + reg = <0x40000000 0x10000>; // 32KiB internal SRAM + }; + + xbar@fff04000 { // System Bus Crossbar Switch (XBAR) + compatible = "fsl,mpc5554-xbar"; + #address-cells = <1>; + #size-cells = <1>; + // The full memory range is covered by XBAR + ranges; + reg = <0xfff04000 0x4000>; + + flash@0 { // read-only FLASH + compatible = "fsl,mpc5554-flash"; + reg = <0x00000000 0x200000>; // 2MiB internal FLASH + }; + + bridge@c3f00000 { + compatible = "fsl,mpc5554-pbridge-a"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xc0000000 0x20000000>; + reg = <0xc3f00000 0x4000>; + + fmpll@3f80000 { // Frequency Modulated PLL + compatible = "fsl,mpc5554-fmpll"; + reg = <0x03f80000 0x4000>; + interrupts = <43 1 // Loss of Clock + 44 1>; // Loss of Lock + }; + + flashconfig@3f88000 { // Flash Configuration + compatible = "fsl,mpc5554-flashconfig"; + reg = <0x03f88000 0x4000>; + }; + + siu@3f89000 { // System Integration Unit + compatible = "fsl,mpc5554-siu"; + reg = <0x03f90000 0x4000>; + interrupts = <45 1 // External Interrupt Overrun 0-15 + 46 1 // External Interrupt 0 + 47 1 // External Interrupt 1 + 48 1 // External Interrupt 2 + 49 1 // External Interrupt 3 + 50 1>; // External Interrupt 4-15 + }; + + emios@3fa0000 { // Modular Timer System + compatible = "fsl,mpc5554-emios"; + reg = <0x03fa0000 0x4000>; + interrupts = <51 1 // Channel 0 + 52 1 // Channel 1 + 53 1 // Channel 2 + 54 1 // Channel 3 + 55 1 // Channel 4 + 56 1 // Channel 5 + 57 1 // Channel 6 + 58 1 // Channel 7 + 59 1 // Channel 8 + 60 1 // Channel 9 + 61 1 // Channel 10 + 62 1 // Channel 11 + 63 1 // Channel 12 + 64 1 // Channel 13 + 65 1 // Channel 14 + 66 1 // Channel 15 + 202 1 // Channel 16 + 203 1 // Channel 17 + 204 1 // Channel 18 + 205 1 // Channel 19 + 206 1 // Channel 20 + 207 1 // Channel 21 + 208 1 // Channel 22 + 209 1>; // Channel 23 + }; + + etpu@3fc0000 { // Enhanced Time Processing Unit + compatible = "fsl,mpc5554-etpu"; + reg = <0x03fc0000 0x4000>; + interrupts = <67 1 // Global Exception + 68 1 // A Channel 0 + 69 1 // A Channel 1 + 70 1 // A Channel 2 + 71 1 // A Channel 3 + 72 1 // A Channel 4 + 73 1 // A Channel 5 + 74 1 // A Channel 6 + 75 1 // A Channel 7 + 76 1 // A Channel 8 + 77 1 // A Channel 9 + 78 1 // A Channel 10 + 79 1 // A Channel 11 + 80 1 // A Channel 12 + 81 1 // A Channel 13 + 82 1 // A Channel 14 + 83 1 // A Channel 15 + 84 1 // A Channel 16 + 85 1 // A Channel 17 + 86 1 // A Channel 18 + 87 1 // A Channel 19 + 88 1 // A Channel 20 + 89 1 // A Channel 21 + 90 1 // A Channel 22 + 91 1 // A Channel 23 + 92 1 // A Channel 24 + 93 1 // A Channel 25 + 94 1 // A Channel 26 + 95 1 // A Channel 27 + 96 1 // A Channel 28 + 97 1 // A Channel 29 + 98 1 // A Channel 30 + 99 1 // A Channel 31 + 243 1 // B Channel 0 + 244 1 // B Channel 1 + 245 1 // B Channel 2 + 246 1 // B Channel 3 + 247 1 // B Channel 4 + 248 1 // B Channel 5 + 249 1 // B Channel 6 + 250 1 // B Channel 7 + 251 1 // B Channel 8 + 252 1 // B Channel 9 + 253 1 // B Channel 10 + 254 1 // B Channel 11 + 255 1 // B Channel 12 + 256 1 // B Channel 13 + 257 1 // B Channel 14 + 258 1 // B Channel 15 + 259 1 // B Channel 16 + 260 1 // B Channel 17 + 261 1 // B Channel 18 + 262 1 // B Channel 19 + 263 1 // B Channel 20 + 264 1 // B Channel 21 + 265 1 // B Channel 22 + 266 1 // B Channel 23 + 267 1 // B Channel 24 + 268 1 // B Channel 25 + 269 1 // B Channel 26 + 270 1 // B Channel 27 + 271 1 // B Channel 28 + 272 1 // B Channel 29 + 273 1 // B Channel 30 + 274 1>; // B Channel 31 + }; + + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fc8000 0x4000>; + }; + + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fcc000 0x4000>; + }; + + etpucode@3fd0000 { // eTPU Shared Code RAM + compatible = "fsl,mpc5554-etpucode"; + reg = <0x03fd0000 0x4000>; + }; + }; + + bridge@fff00000 { + compatible = "fsl,mpc5554-pbridge-b"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xe0000000 0x20000000>; + reg = <0xfff00000 0x4000>; + + ecsm@fff40000 { // Error Correction Status Module (ECSM) + compatible = "fsl,mpc5554-ecsm"; + reg = <0xfff40000 0x4000>; + interrupts = <8 1 // Software Watchdog Interrupt + 9 1>; // Combined: Internal SRAM Non-Correctable Error, Flash Non-Correctable Error + }; + + edma@fff44000 { // Enhanced DMA Controller (eDMA) + compatible = "fsl,mpc5554-edma"; + reg = <0xfff44000 0x4000>; + interrupts = <10 1 // Channel Error 0-31 + 11 1 // Channel 0 + 12 1 // Channel 1 + 13 1 // Channel 2 + 14 1 // Channel 3 + 15 1 // Channel 4 + 16 1 // Channel 5 + 17 1 // Channel 6 + 18 1 // Channel 7 + 19 1 // Channel 8 + 20 1 // Channel 9 + 21 1 // Channel 10 + 22 1 // Channel 11 + 23 1 // Channel 12 + 24 1 // Channel 13 + 25 1 // Channel 14 + 26 1 // Channel 15 + 27 1 // Channel 16 + 28 1 // Channel 17 + 29 1 // Channel 18 + 30 1 // Channel 19 + 31 1 // Channel 20 + 32 1 // Channel 21 + 33 1 // Channel 22 + 34 1 // Channel 23 + 35 1 // Channel 24 + 36 1 // Channel 25 + 37 1 // Channel 26 + 38 1 // Channel 27 + 39 1 // Channel 28 + 40 1 // Channel 29 + 41 1 // Channel 30 + 42 1 // Channel 31 + 210 1 // Channel Error 32-63 + 211 1 // Channel 32 + 212 1 // Channel 33 + 213 1 // Channel 34 + 214 1 // Channel 35 + 215 1 // Channel 36 + 216 1 // Channel 37 + 217 1 // Channel 38 + 218 1 // Channel 39 + 219 1 // Channel 40 + 220 1 // Channel 41 + 221 1 // Channel 42 + 222 1 // Channel 43 + 223 1 // Channel 44 + 224 1 // Channel 45 + 225 1 // Channel 46 + 226 1 // Channel 47 + 227 1 // Channel 48 + 228 1 // Channel 49 + 229 1 // Channel 50 + 230 1 // Channel 51 + 231 1 // Channel 52 + 232 1 // Channel 53 + 233 1 // Channel 54 + 234 1 // Channel 55 + 235 1 // Channel 56 + 236 1 // Channel 57 + 237 1 // Channel 58 + 238 1 // Channel 59 + 239 1 // Channel 60 + 240 1 // Channel 61 + 241 1 // Channel 62 + 242 1>; // Channel 63 + }; + + intc: intc@fff48000 { // Interrupt Controller (INTC) + compatible = "fsl,mpc5554-intc"; + interrupt-controller; + #interrupt-cells = <2>; + reg = <0xfff48000 0x4000>; + }; + + eqadc@fff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) + compatible = "fsl,mpc5554-eqacd"; + reg = <0xfff80000 0x4000>; + interrupts = <100 1 // Combined: Trigger Overrun, Receive FIFO Overflow, Command FIFO Underflow + 101 1 // Command FIFO 0 Non-Coherency + 102 1 // Command FIFO 0 Pause + 103 1 // Command FIFO 0 End of Queue + 104 1 // Command FIFO 0 Fill + 105 1 // Command FIFO 0 Drain + 106 1 // Command FIFO 1 Non-Coherency + 107 1 // Command FIFO 1 Pause + 108 1 // Command FIFO 1 End of Queue + 109 1 // Command FIFO 1 Fill + 111 1 // Command FIFO 1 Drain + 111 1 // Command FIFO 2 Non-Coherency + 112 1 // Command FIFO 2 Pause + 113 1 // Command FIFO 2 End of Queue + 114 1 // Command FIFO 2 Fill + 115 1 // Command FIFO 2 Drain + 116 1 // Command FIFO 3 Non-Coherency + 117 1 // Command FIFO 3 Pause + 118 1 // Command FIFO 3 End of Queue + 119 1 // Command FIFO 3 Fill + 120 1 // Command FIFO 3 Drain + 121 1 // Command FIFO 4 Non-Coherency + 122 1 // Command FIFO 4 Pause + 123 1 // Command FIFO 4 End of Queue + 124 1 // Command FIFO 4 Fill + 125 1 // Command FIFO 4 Drain + 126 1 // Command FIFO 5 Non-Coherency + 127 1 // Command FIFO 5 Pause + 128 1 // Command FIFO 5 End of Queue + 129 1 // Command FIFO 5 Fill + 130 1>; // Command FIFO 5 Drain + }; + + dspi@fff90000 { // Deserial Serial Peripheral Interface (DSPI_A) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff90000 0x4000>; + interrupts = <275 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 276 1 // Transmit FIFO End of Queue + 277 1 // Transmit FIFO Fill Flag + 278 1 // Transfer Complete + 279 1>; // Receive FIFO Drain + }; + + dspi@fff94000 { // Deserial Serial Peripheral Interface (DSPI_B) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff94000 0x4000>; + interrupts = <131 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 132 1 // Transmit FIFO End of Queue + 133 1 // Transmit FIFO Fill Flag + 134 1 // Transfer Complete + 135 1>; // Receive FIFO Drain + }; + + dspi@fff98000 { // Deserial Serial Peripheral Interface (DSPI_C) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff98000 0x4000>; + interrupts = <136 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 137 1 // Transmit FIFO End of Queue + 138 1 // Transmit FIFO Fill Flag + 139 1 // Transfer Complete + 140 1>; // Receive FIFO Drain + }; + + dspi@fff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff9c000 0x4000>; + interrupts = <141 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 142 1 // Transmit FIFO End of Queue + 143 1 // Transmit FIFO Fill Flag + 144 1 // Transfer Complete + 145 1>; // Receive FIFO Drain + }; + + esci@fffb0000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb0000 0x4000>; + interrupts = <146 1>; // Combined request for all SCI_A interrupts + }; + + esci@fffb4000 { // Serial Communications Interface (SCI_B) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb4000 0x4000>; + interrupts = <149 1>; // Combined request for all SCI_A interrupts + }; + + can@fffc0000 { // Controller Area Network (FlexCAN_A) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc0000 0x4000>; + interrupts = <152 1 // Bus off + 153 1 // Error + 155 1 // Buffer 0 + 156 1 // Buffer 1 + 157 1 // Buffer 2 + 158 1 // Buffer 3 + 159 1 // Buffer 4 + 160 1 // Buffer 5 + 161 1 // Buffer 6 + 162 1 // Buffer 7 + 163 1 // Buffer 8 + 164 1 // Buffer 9 + 165 1 // Buffer 10 + 166 1 // Buffer 11 + 167 1 // Buffer 12 + 168 1 // Buffer 13 + 169 1 // Buffer 14 + 170 1 // Buffer 15 + 171 1 // Buffers 16-31 + 172 1>; // Buffers 32-63 + }; + + can@fffc4000 { // Controller Area Network (FlexCAN_B) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc4000 0x4000>; + interrupts = <280 1 // Bus off + 281 1 // Error + 283 1 // Buffer 0 + 284 1 // Buffer 1 + 285 1 // Buffer 2 + 286 1 // Buffer 3 + 287 1 // Buffer 4 + 288 1 // Buffer 5 + 289 1 // Buffer 6 + 290 1 // Buffer 7 + 291 1 // Buffer 8 + 292 1 // Buffer 9 + 293 1 // Buffer 10 + 294 1 // Buffer 11 + 295 1 // Buffer 12 + 296 1 // Buffer 13 + 297 1 // Buffer 14 + 298 1 // Buffer 15 + 299 1 // Buffers 16-31 + 300 1>; // Buffers 32-63 + }; + + can@fffc8000 { // Controller Area Network (FlexCAN_C) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc8000 0x4000>; + interrupts = <173 1 // Bus off + 174 1 // Error + 176 1 // Buffer 0 + 177 1 // Buffer 1 + 178 1 // Buffer 2 + 179 1 // Buffer 3 + 180 1 // Buffer 4 + 181 1 // Buffer 5 + 182 1 // Buffer 6 + 183 1 // Buffer 7 + 184 1 // Buffer 8 + 185 1 // Buffer 9 + 186 1 // Buffer 10 + 187 1 // Buffer 11 + 188 1 // Buffer 12 + 189 1 // Buffer 13 + 190 1 // Buffer 14 + 191 1 // Buffer 15 + 192 1 // Buffers 16-31 + 193 1>; // Buffers 32-63 + }; + + bam@ffffc000 { // Boot Assist Module (BAM) + compatible = "fsl,mpc5554-bam"; + reg = <0xffffc000 0x4000>; + }; + + }; + + }; + +}; ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-13 11:59 ` Németh Márton @ 2010-03-17 18:12 ` Németh Márton 2010-03-17 19:02 ` Grant Likely 1 sibling, 0 replies; 25+ messages in thread From: Németh Márton @ 2010-03-17 18:12 UTC (permalink / raw) To: Grant Likely, David Gibson, Segher Boessenkool; +Cc: linuxppc-dev Development Hi Grant, David and Segher, is there any comments or suggestions about this MPC5554 device tree? Regards, Márton Németh Németh Márton wrote: > Hi, > > here is a version with modified cpu node, xbar ranges and added interrupt sources. > Please send comments. > > Regards, > > Márton Németh > > --- > From: Márton Németh <nm127@freemail.hu> > > Add device tree for Freescale MPC5554. > > Signed-off-by: Márton Németh <nm127@freemail.hu> > --- > diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux/arch/powerpc/boot/dts/mpc5554.dts > --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 > +++ linux/arch/powerpc/boot/dts/mpc5554.dts 2010-03-13 12:52:32.000000000 +0100 > @@ -0,0 +1,473 @@ > +/* > + * Freescale MPC5554 Device Tree Source > + * > + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 > + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf > + * - Block Diagram: page 1-3, Figure 1-1 > + * - Memory Map: page 1-21, Table 1-2 > + * - Interrupt Request Sources: page 10-16, Table 10-9 > + * > + * Copyright 2010 Márton Németh > + * Márton Németh <nm127@freemail.hu> > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation; either version 2 of the License, or (at your > + * option) any later version. > + */ > + > +/dts-v1/; > + > +/ { > + model = "MPC5554"; > + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board > + #address-cells = <1>; > + #size-cells = <1>; > + interrupt-parent = <&intc>; > + > + cpus { > + #address-cells = <1>; > + #size-cells = <0>; > + > + cpu@0 { > + device_type = "cpu"; > + compatible = "PowerPC,5554", "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; > + reg = <0>; > + d-cache-line-size = <32>; > + i-cache-line-size = <32>; > + d-cache-size = <0x8000>; // L1, 32KiB > + i-cache-size = <0x8000>; // L1, 32KiB > + timebase-frequency = <0>; // from bootloader > + bus-frequency = <0>; // from bootloader > + clock-frequency = <0>; // from bootloader > + }; > + }; > + > + memory@40000000 { > + device_type = "memory"; > + reg = <0x40000000 0x10000>; // 32KiB internal SRAM > + }; > + > + xbar@fff04000 { // System Bus Crossbar Switch (XBAR) > + compatible = "fsl,mpc5554-xbar"; > + #address-cells = <1>; > + #size-cells = <1>; > + // The full memory range is covered by XBAR > + ranges; > + reg = <0xfff04000 0x4000>; > + > + flash@0 { // read-only FLASH > + compatible = "fsl,mpc5554-flash"; > + reg = <0x00000000 0x200000>; // 2MiB internal FLASH > + }; > + > + bridge@c3f00000 { > + compatible = "fsl,mpc5554-pbridge-a"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0 0xc0000000 0x20000000>; > + reg = <0xc3f00000 0x4000>; > + > + fmpll@3f80000 { // Frequency Modulated PLL > + compatible = "fsl,mpc5554-fmpll"; > + reg = <0x03f80000 0x4000>; > + interrupts = <43 1 // Loss of Clock > + 44 1>; // Loss of Lock > + }; > + > + flashconfig@3f88000 { // Flash Configuration > + compatible = "fsl,mpc5554-flashconfig"; > + reg = <0x03f88000 0x4000>; > + }; > + > + siu@3f89000 { // System Integration Unit > + compatible = "fsl,mpc5554-siu"; > + reg = <0x03f90000 0x4000>; > + interrupts = <45 1 // External Interrupt Overrun 0-15 > + 46 1 // External Interrupt 0 > + 47 1 // External Interrupt 1 > + 48 1 // External Interrupt 2 > + 49 1 // External Interrupt 3 > + 50 1>; // External Interrupt 4-15 > + }; > + > + emios@3fa0000 { // Modular Timer System > + compatible = "fsl,mpc5554-emios"; > + reg = <0x03fa0000 0x4000>; > + interrupts = <51 1 // Channel 0 > + 52 1 // Channel 1 > + 53 1 // Channel 2 > + 54 1 // Channel 3 > + 55 1 // Channel 4 > + 56 1 // Channel 5 > + 57 1 // Channel 6 > + 58 1 // Channel 7 > + 59 1 // Channel 8 > + 60 1 // Channel 9 > + 61 1 // Channel 10 > + 62 1 // Channel 11 > + 63 1 // Channel 12 > + 64 1 // Channel 13 > + 65 1 // Channel 14 > + 66 1 // Channel 15 > + 202 1 // Channel 16 > + 203 1 // Channel 17 > + 204 1 // Channel 18 > + 205 1 // Channel 19 > + 206 1 // Channel 20 > + 207 1 // Channel 21 > + 208 1 // Channel 22 > + 209 1>; // Channel 23 > + }; > + > + etpu@3fc0000 { // Enhanced Time Processing Unit > + compatible = "fsl,mpc5554-etpu"; > + reg = <0x03fc0000 0x4000>; > + interrupts = <67 1 // Global Exception > + 68 1 // A Channel 0 > + 69 1 // A Channel 1 > + 70 1 // A Channel 2 > + 71 1 // A Channel 3 > + 72 1 // A Channel 4 > + 73 1 // A Channel 5 > + 74 1 // A Channel 6 > + 75 1 // A Channel 7 > + 76 1 // A Channel 8 > + 77 1 // A Channel 9 > + 78 1 // A Channel 10 > + 79 1 // A Channel 11 > + 80 1 // A Channel 12 > + 81 1 // A Channel 13 > + 82 1 // A Channel 14 > + 83 1 // A Channel 15 > + 84 1 // A Channel 16 > + 85 1 // A Channel 17 > + 86 1 // A Channel 18 > + 87 1 // A Channel 19 > + 88 1 // A Channel 20 > + 89 1 // A Channel 21 > + 90 1 // A Channel 22 > + 91 1 // A Channel 23 > + 92 1 // A Channel 24 > + 93 1 // A Channel 25 > + 94 1 // A Channel 26 > + 95 1 // A Channel 27 > + 96 1 // A Channel 28 > + 97 1 // A Channel 29 > + 98 1 // A Channel 30 > + 99 1 // A Channel 31 > + 243 1 // B Channel 0 > + 244 1 // B Channel 1 > + 245 1 // B Channel 2 > + 246 1 // B Channel 3 > + 247 1 // B Channel 4 > + 248 1 // B Channel 5 > + 249 1 // B Channel 6 > + 250 1 // B Channel 7 > + 251 1 // B Channel 8 > + 252 1 // B Channel 9 > + 253 1 // B Channel 10 > + 254 1 // B Channel 11 > + 255 1 // B Channel 12 > + 256 1 // B Channel 13 > + 257 1 // B Channel 14 > + 258 1 // B Channel 15 > + 259 1 // B Channel 16 > + 260 1 // B Channel 17 > + 261 1 // B Channel 18 > + 262 1 // B Channel 19 > + 263 1 // B Channel 20 > + 264 1 // B Channel 21 > + 265 1 // B Channel 22 > + 266 1 // B Channel 23 > + 267 1 // B Channel 24 > + 268 1 // B Channel 25 > + 269 1 // B Channel 26 > + 270 1 // B Channel 27 > + 271 1 // B Channel 28 > + 272 1 // B Channel 29 > + 273 1 // B Channel 30 > + 274 1>; // B Channel 31 > + }; > + > + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) > + compatible = "fsl,mpc5554-etpudata"; > + reg = <0x03fc8000 0x4000>; > + }; > + > + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror > + compatible = "fsl,mpc5554-etpudata"; > + reg = <0x03fcc000 0x4000>; > + }; > + > + etpucode@3fd0000 { // eTPU Shared Code RAM > + compatible = "fsl,mpc5554-etpucode"; > + reg = <0x03fd0000 0x4000>; > + }; > + }; > + > + bridge@fff00000 { > + compatible = "fsl,mpc5554-pbridge-b"; > + #address-cells = <1>; > + #size-cells = <1>; > + ranges = <0 0xe0000000 0x20000000>; > + reg = <0xfff00000 0x4000>; > + > + ecsm@fff40000 { // Error Correction Status Module (ECSM) > + compatible = "fsl,mpc5554-ecsm"; > + reg = <0xfff40000 0x4000>; > + interrupts = <8 1 // Software Watchdog Interrupt > + 9 1>; // Combined: Internal SRAM Non-Correctable Error, Flash Non-Correctable Error > + }; > + > + edma@fff44000 { // Enhanced DMA Controller (eDMA) > + compatible = "fsl,mpc5554-edma"; > + reg = <0xfff44000 0x4000>; > + interrupts = <10 1 // Channel Error 0-31 > + 11 1 // Channel 0 > + 12 1 // Channel 1 > + 13 1 // Channel 2 > + 14 1 // Channel 3 > + 15 1 // Channel 4 > + 16 1 // Channel 5 > + 17 1 // Channel 6 > + 18 1 // Channel 7 > + 19 1 // Channel 8 > + 20 1 // Channel 9 > + 21 1 // Channel 10 > + 22 1 // Channel 11 > + 23 1 // Channel 12 > + 24 1 // Channel 13 > + 25 1 // Channel 14 > + 26 1 // Channel 15 > + 27 1 // Channel 16 > + 28 1 // Channel 17 > + 29 1 // Channel 18 > + 30 1 // Channel 19 > + 31 1 // Channel 20 > + 32 1 // Channel 21 > + 33 1 // Channel 22 > + 34 1 // Channel 23 > + 35 1 // Channel 24 > + 36 1 // Channel 25 > + 37 1 // Channel 26 > + 38 1 // Channel 27 > + 39 1 // Channel 28 > + 40 1 // Channel 29 > + 41 1 // Channel 30 > + 42 1 // Channel 31 > + 210 1 // Channel Error 32-63 > + 211 1 // Channel 32 > + 212 1 // Channel 33 > + 213 1 // Channel 34 > + 214 1 // Channel 35 > + 215 1 // Channel 36 > + 216 1 // Channel 37 > + 217 1 // Channel 38 > + 218 1 // Channel 39 > + 219 1 // Channel 40 > + 220 1 // Channel 41 > + 221 1 // Channel 42 > + 222 1 // Channel 43 > + 223 1 // Channel 44 > + 224 1 // Channel 45 > + 225 1 // Channel 46 > + 226 1 // Channel 47 > + 227 1 // Channel 48 > + 228 1 // Channel 49 > + 229 1 // Channel 50 > + 230 1 // Channel 51 > + 231 1 // Channel 52 > + 232 1 // Channel 53 > + 233 1 // Channel 54 > + 234 1 // Channel 55 > + 235 1 // Channel 56 > + 236 1 // Channel 57 > + 237 1 // Channel 58 > + 238 1 // Channel 59 > + 239 1 // Channel 60 > + 240 1 // Channel 61 > + 241 1 // Channel 62 > + 242 1>; // Channel 63 > + }; > + > + intc: intc@fff48000 { // Interrupt Controller (INTC) > + compatible = "fsl,mpc5554-intc"; > + interrupt-controller; > + #interrupt-cells = <2>; > + reg = <0xfff48000 0x4000>; > + }; > + > + eqadc@fff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) > + compatible = "fsl,mpc5554-eqacd"; > + reg = <0xfff80000 0x4000>; > + interrupts = <100 1 // Combined: Trigger Overrun, Receive FIFO Overflow, Command FIFO Underflow > + 101 1 // Command FIFO 0 Non-Coherency > + 102 1 // Command FIFO 0 Pause > + 103 1 // Command FIFO 0 End of Queue > + 104 1 // Command FIFO 0 Fill > + 105 1 // Command FIFO 0 Drain > + 106 1 // Command FIFO 1 Non-Coherency > + 107 1 // Command FIFO 1 Pause > + 108 1 // Command FIFO 1 End of Queue > + 109 1 // Command FIFO 1 Fill > + 111 1 // Command FIFO 1 Drain > + 111 1 // Command FIFO 2 Non-Coherency > + 112 1 // Command FIFO 2 Pause > + 113 1 // Command FIFO 2 End of Queue > + 114 1 // Command FIFO 2 Fill > + 115 1 // Command FIFO 2 Drain > + 116 1 // Command FIFO 3 Non-Coherency > + 117 1 // Command FIFO 3 Pause > + 118 1 // Command FIFO 3 End of Queue > + 119 1 // Command FIFO 3 Fill > + 120 1 // Command FIFO 3 Drain > + 121 1 // Command FIFO 4 Non-Coherency > + 122 1 // Command FIFO 4 Pause > + 123 1 // Command FIFO 4 End of Queue > + 124 1 // Command FIFO 4 Fill > + 125 1 // Command FIFO 4 Drain > + 126 1 // Command FIFO 5 Non-Coherency > + 127 1 // Command FIFO 5 Pause > + 128 1 // Command FIFO 5 End of Queue > + 129 1 // Command FIFO 5 Fill > + 130 1>; // Command FIFO 5 Drain > + }; > + > + dspi@fff90000 { // Deserial Serial Peripheral Interface (DSPI_A) > + compatible = "fsl,mpc5554-dspi"; > + reg = <0xfff90000 0x4000>; > + interrupts = <275 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow > + 276 1 // Transmit FIFO End of Queue > + 277 1 // Transmit FIFO Fill Flag > + 278 1 // Transfer Complete > + 279 1>; // Receive FIFO Drain > + }; > + > + dspi@fff94000 { // Deserial Serial Peripheral Interface (DSPI_B) > + compatible = "fsl,mpc5554-dspi"; > + reg = <0xfff94000 0x4000>; > + interrupts = <131 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow > + 132 1 // Transmit FIFO End of Queue > + 133 1 // Transmit FIFO Fill Flag > + 134 1 // Transfer Complete > + 135 1>; // Receive FIFO Drain > + }; > + > + dspi@fff98000 { // Deserial Serial Peripheral Interface (DSPI_C) > + compatible = "fsl,mpc5554-dspi"; > + reg = <0xfff98000 0x4000>; > + interrupts = <136 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow > + 137 1 // Transmit FIFO End of Queue > + 138 1 // Transmit FIFO Fill Flag > + 139 1 // Transfer Complete > + 140 1>; // Receive FIFO Drain > + }; > + > + dspi@fff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) > + compatible = "fsl,mpc5554-dspi"; > + reg = <0xfff9c000 0x4000>; > + interrupts = <141 1 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow > + 142 1 // Transmit FIFO End of Queue > + 143 1 // Transmit FIFO Fill Flag > + 144 1 // Transfer Complete > + 145 1>; // Receive FIFO Drain > + }; > + > + esci@fffb0000 { // Serial Communications Interface (SCI_A) > + compatible = "fsl,mpc5554-esci"; > + reg = <0xfffb0000 0x4000>; > + interrupts = <146 1>; // Combined request for all SCI_A interrupts > + }; > + > + esci@fffb4000 { // Serial Communications Interface (SCI_B) > + compatible = "fsl,mpc5554-esci"; > + reg = <0xfffb4000 0x4000>; > + interrupts = <149 1>; // Combined request for all SCI_A interrupts > + }; > + > + can@fffc0000 { // Controller Area Network (FlexCAN_A) > + compatible = "fsl,mpc5554-flexcan"; > + reg = <0xfffc0000 0x4000>; > + interrupts = <152 1 // Bus off > + 153 1 // Error > + 155 1 // Buffer 0 > + 156 1 // Buffer 1 > + 157 1 // Buffer 2 > + 158 1 // Buffer 3 > + 159 1 // Buffer 4 > + 160 1 // Buffer 5 > + 161 1 // Buffer 6 > + 162 1 // Buffer 7 > + 163 1 // Buffer 8 > + 164 1 // Buffer 9 > + 165 1 // Buffer 10 > + 166 1 // Buffer 11 > + 167 1 // Buffer 12 > + 168 1 // Buffer 13 > + 169 1 // Buffer 14 > + 170 1 // Buffer 15 > + 171 1 // Buffers 16-31 > + 172 1>; // Buffers 32-63 > + }; > + > + can@fffc4000 { // Controller Area Network (FlexCAN_B) > + compatible = "fsl,mpc5554-flexcan"; > + reg = <0xfffc4000 0x4000>; > + interrupts = <280 1 // Bus off > + 281 1 // Error > + 283 1 // Buffer 0 > + 284 1 // Buffer 1 > + 285 1 // Buffer 2 > + 286 1 // Buffer 3 > + 287 1 // Buffer 4 > + 288 1 // Buffer 5 > + 289 1 // Buffer 6 > + 290 1 // Buffer 7 > + 291 1 // Buffer 8 > + 292 1 // Buffer 9 > + 293 1 // Buffer 10 > + 294 1 // Buffer 11 > + 295 1 // Buffer 12 > + 296 1 // Buffer 13 > + 297 1 // Buffer 14 > + 298 1 // Buffer 15 > + 299 1 // Buffers 16-31 > + 300 1>; // Buffers 32-63 > + }; > + > + can@fffc8000 { // Controller Area Network (FlexCAN_C) > + compatible = "fsl,mpc5554-flexcan"; > + reg = <0xfffc8000 0x4000>; > + interrupts = <173 1 // Bus off > + 174 1 // Error > + 176 1 // Buffer 0 > + 177 1 // Buffer 1 > + 178 1 // Buffer 2 > + 179 1 // Buffer 3 > + 180 1 // Buffer 4 > + 181 1 // Buffer 5 > + 182 1 // Buffer 6 > + 183 1 // Buffer 7 > + 184 1 // Buffer 8 > + 185 1 // Buffer 9 > + 186 1 // Buffer 10 > + 187 1 // Buffer 11 > + 188 1 // Buffer 12 > + 189 1 // Buffer 13 > + 190 1 // Buffer 14 > + 191 1 // Buffer 15 > + 192 1 // Buffers 16-31 > + 193 1>; // Buffers 32-63 > + }; > + > + bam@ffffc000 { // Boot Assist Module (BAM) > + compatible = "fsl,mpc5554-bam"; > + reg = <0xffffc000 0x4000>; > + }; > + > + }; > + > + }; > + > +}; > ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-13 11:59 ` Németh Márton 2010-03-17 18:12 ` Németh Márton @ 2010-03-17 19:02 ` Grant Likely 2010-03-22 6:28 ` Németh Márton 2010-03-30 6:54 ` Németh Márton 1 sibling, 2 replies; 25+ messages in thread From: Grant Likely @ 2010-03-17 19:02 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev Development, David Gibson MjAxMC8zLzEzIE7pbWV0aCBN4XJ0b24gPG5tMTI3QGZyZWVtYWlsLmh1PjoKPiBIaSwKPgo+IGhl cmUgaXMgYSB2ZXJzaW9uIHdpdGggbW9kaWZpZWQgY3B1IG5vZGUsIHhiYXIgcmFuZ2VzIGFuZCBh ZGRlZCBpbnRlcnJ1cHQgc291cmNlcy4KPiBQbGVhc2Ugc2VuZCBjb21tZW50cy4KCkhpIE3hcnRv bi4gIEEgZmV3IGNvbW1lbnRzIGJlbG93LgoKPiAtLS0KPiBGcm9tOiBN4XJ0b24gTultZXRoIDxu bTEyN0BmcmVlbWFpbC5odT4KPgo+IEFkZCBkZXZpY2UgdHJlZSBmb3IgRnJlZXNjYWxlIE1QQzU1 NTQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBN4XJ0b24gTultZXRoIDxubTEyN0BmcmVlbWFpbC5odT4K PiAtLS0KPiBkaWZmIC11cHJOIGxpbnV4LTIuNi4zMy5vcmlnL2FyY2gvcG93ZXJwYy9ib290L2R0 cy9tcGM1NTU0LmR0cyBsaW51eC9hcmNoL3Bvd2VycGMvYm9vdC9kdHMvbXBjNTU1NC5kdHMKPiAt LS0gbGludXgtMi42LjMzLm9yaWcvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzU1NTQuZHRzIDE5 NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCj4gKysrIGxpbnV4L2FyY2gvcG93ZXJw Yy9ib290L2R0cy9tcGM1NTU0LmR0cyCgIKAgMjAxMC0wMy0xMyAxMjo1MjozMi4wMDAwMDAwMDAg KzAxMDAKPiBAQCAtMCwwICsxLDQ3MyBAQAo+ICsvKgo+ICsgKiBGcmVlc2NhbGUgTVBDNTU1NCBE ZXZpY2UgVHJlZSBTb3VyY2UKPiArICoKPiArICogQmFzZWQgb24gTVBDNTU1My81NTU0IE1pY3Jv Y29udHJvbGxlciBSZWZlcmVuY2UgTWFudWFsLCBSZXYuIDQuMCwgMDQvMjAwNwo+ICsgKiBodHRw Oi8vd3d3LmZyZWVzY2FsZS5jb20vZmlsZXMvMzJiaXQvZG9jL3JlZl9tYW51YWwvTVBDNTU1M19N UEM1NTU0X1JNLnBkZgo+ICsgKiCgLSBCbG9jayBEaWFncmFtOiBwYWdlIDEtMywgRmlndXJlIDEt MQo+ICsgKiCgLSBNZW1vcnkgTWFwOiBwYWdlIDEtMjEsIFRhYmxlIDEtMgo+ICsgKiCgLSBJbnRl cnJ1cHQgUmVxdWVzdCBTb3VyY2VzOiBwYWdlIDEwLTE2LCBUYWJsZSAxMC05Cj4gKyAqCj4gKyAq IENvcHlyaWdodCAyMDEwIE3hcnRvbiBO6W1ldGgKPiArICogTeFydG9uIE7pbWV0aCA8bm0xMjdA ZnJlZW1haWwuaHU+Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSCgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciCgdGhl IHRlcm1zIG9mIKB0aGUgR05VIEdlbmVyYWwgoFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUKPiArICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyCgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgoExpY2Vuc2UsIG9yIChhdCB5b3VyCj4gKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCj4gKyAqLwo+ICsKPiArL2R0cy12MS87Cj4gKwo+ICsvIHsKPiArIKAgoCCgIG1vZGVsID0g Ik1QQzU1NTQiOwo+ICsgoCCgIKAgY29tcGF0aWJsZSA9ICJmc2wsTVBDNTU1NEVWQiI7IKAgoCCg IKAgoC8vIEZyZWVzY2FsZSBNUEM1NTU0IEV2YWx1YXRpb24gQm9hcmQKPiArIKAgoCCgICNhZGRy ZXNzLWNlbGxzID0gPDE+Owo+ICsgoCCgIKAgI3NpemUtY2VsbHMgPSA8MT47Cj4gKyCgIKAgoCBp bnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKPiArCj4gKyCgIKAgoCBjcHVzIHsKPiArIKAgoCCg IKAgoCCgIKAgI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKyCgIKAgoCCgIKAgoCCgICNzaXplLWNl bGxzID0gPDA+Owo+ICsKPiArIKAgoCCgIKAgoCCgIKAgY3B1QDAgewo+ICsgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIGRldmljZV90eXBlID0gImNwdSI7Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg Y29tcGF0aWJsZSA9ICJQb3dlclBDLDU1NTQiLCAiZnNsLG1wYzU1NTQtZTIwMHo2IiwgImZzbCxw b3dlcnBjLWUyMDB6NiI7Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgcmVnID0gPDA+Owo+ICsg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIGQtY2FjaGUtbGluZS1zaXplID0gPDMyPjsKPiArIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCBpLWNhY2hlLWxpbmUtc2l6ZSA9IDwzMj47Cj4gKyCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgZC1jYWNoZS1zaXplID0gPDB4ODAwMD47IKAgoCCgIKAvLyBMMSwgMzJLaUIK PiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBpLWNhY2hlLXNpemUgPSA8MHg4MDAwPjsgoCCgIKAg oC8vIEwxLCAzMktpQgo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIHRpbWViYXNlLWZyZXF1ZW5j eSA9IDwwPjsgoCCgIKAgLy8gZnJvbSBib290bG9hZGVyCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgYnVzLWZyZXF1ZW5jeSA9IDwwPjsgoCCgIKAgoCCgIKAvLyBmcm9tIGJvb3Rsb2FkZXIKPiAr IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBjbG9jay1mcmVxdWVuY3kgPSA8MD47IKAgoCCgIKAgoC8v IGZyb20gYm9vdGxvYWRlcgo+ICsgoCCgIKAgoCCgIKAgoCB9Owo+ICsgoCCgIKAgfTsKPiArCj4g KyCgIKAgoCBtZW1vcnlANDAwMDAwMDAgewo+ICsgoCCgIKAgoCCgIKAgoCBkZXZpY2VfdHlwZSA9 ICJtZW1vcnkiOwo+ICsgoCCgIKAgoCCgIKAgoCByZWcgPSA8MHg0MDAwMDAwMCAweDEwMDAwPjsg oCCgIC8vIDMyS2lCIGludGVybmFsIFNSQU0KPiArIKAgoCCgIH07CgpPaC4uLi4gdGhpcyBpcyB0 aGUgc21hbGwgU1JBTS4gIHllYWgsIHlvdSBzaG91bGQgbW92ZSB0aGlzIHVuZGVyIHRoZQphcHBy b3ByaWF0ZSBicmlkZ2Ugbm9kZSwgcmVtb3ZlIHRoZSBkZXZpY2VfdHlwZSBwcm9wZXJ0eSwgYW5k IGFkZCBhCmNvbXBhdGlibGUgcHJvcGVydHkuICBNZW1vcnkgbm9kZXMgYXQgdGhlIHJvb3QgbGlr ZSB0aGlzIGFyZSB1c2VkIHRvCmRlc2NyaWJlIHdoYXQgaXMgYmFzaWNhbGx5IG1haW4gbWVtb3J5 ICh3aGF0IExpbnV4IHdpbGwgZXhlY3V0ZSBvdXQKb2YpLiAgWW91J2xsIHdhbnQgYSBuZXcgbWVt b3J5IG5vZGUgZm9yIHRoZSBleHRlcm5hbCByYW0gaG9va2VkIHVwIHRvCnRoZSA1NTU0LgoKPiAr Cj4gKyCgIKAgoCB4YmFyQGZmZjA0MDAwIHsgoCCgIKAgoCAvLyBTeXN0ZW0gQnVzIENyb3NzYmFy IFN3aXRjaCAoWEJBUikKPiArIKAgoCCgIKAgoCCgIKAgY29tcGF0aWJsZSA9ICJmc2wsbXBjNTU1 NC14YmFyIjsKPiArIKAgoCCgIKAgoCCgIKAgI2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4gKyCgIKAg oCCgIKAgoCCgICNzaXplLWNlbGxzID0gPDE+Owo+ICsgoCCgIKAgoCCgIKAgoCAvLyBUaGUgZnVs bCBtZW1vcnkgcmFuZ2UgaXMgY292ZXJlZCBieSBYQkFSCj4gKyCgIKAgoCCgIKAgoCCgIHJhbmdl czsKPiArIKAgoCCgIKAgoCCgIKAgcmVnID0gPDB4ZmZmMDQwMDAgMHg0MDAwPjsKPiArCj4gKyCg IKAgoCCgIKAgoCCgIGZsYXNoQDAgeyCgIKAgoCAvLyByZWFkLW9ubHkgRkxBU0gKPiArIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCBjb21wYXRpYmxlID0gImZzbCxtcGM1NTU0LWZsYXNoIjsKPiArIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCByZWcgPSA8MHgwMDAwMDAwMCAweDIwMDAwMD47IKAgoC8vIDJN aUIgaW50ZXJuYWwgRkxBU0gKPiArIKAgoCCgIKAgoCCgIKAgfTsKPiArCj4gKyCgIKAgoCCgIKAg oCCgIGJyaWRnZUBjM2YwMDAwMCB7Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgY29tcGF0aWJs ZSA9ICJmc2wsbXBjNTU1NC1wYnJpZGdlLWEiOwo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgICNh ZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgICNzaXplLWNlbGxz ID0gPDE+Owo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIHJhbmdlcyA9IDwwIDB4YzAwMDAwMDAg MHgyMDAwMDAwMD47Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgcmVnID0gPDB4YzNmMDAwMDAg MHg0MDAwPjsKPiArCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgZm1wbGxAM2Y4MDAwMCB7IKAg oCCgIKAgLy8gRnJlcXVlbmN5IE1vZHVsYXRlZCBQTEwKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIGNvbXBhdGlibGUgPSAiZnNsLG1wYzU1NTQtZm1wbGwiOwo+ICsgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgcmVnID0gPDB4MDNmODAwMDAgMHg0MDAwPjsKPiArIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGludGVycnVwdHMgPSA8NDMgMSCgIKAgoC8vIExvc3Mg b2YgQ2xvY2sKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg NDQgMT47IKAgoC8vIExvc3Mgb2YgTG9jawo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIH07Cj4g Kwo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGZsYXNoY29uZmlnQDNmODgwMDAgeyCgIC8vIEZs YXNoIENvbmZpZ3VyYXRpb24KPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGNvbXBh dGlibGUgPSAiZnNsLG1wYzU1NTQtZmxhc2hjb25maWciOwo+ICsgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgcmVnID0gPDB4MDNmODgwMDAgMHg0MDAwPjsKPiArIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCB9Owo+ICsKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBzaXVAM2Y4OTAwMCB7IKAg oCCgIKAgoCAvLyBTeXN0ZW0gSW50ZWdyYXRpb24gVW5pdAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgY29tcGF0aWJsZSA9ICJmc2wsbXBjNTU1NC1zaXUiOwo+ICsgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgcmVnID0gPDB4MDNmOTAwMDAgMHg0MDAwPjsKPiArIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGludGVycnVwdHMgPSA8NDUgMSCgIKAgoC8vIEV4dGVy bmFsIEludGVycnVwdCBPdmVycnVuIDAtMTUKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgNDYgMSCgIKAgoC8vIEV4dGVybmFsIEludGVycnVwdCAwCj4gKyCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDQ3IDEgoCCgIKAvLyBF eHRlcm5hbCBJbnRlcnJ1cHQgMQo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCA0OCAxIKAgoCCgLy8gRXh0ZXJuYWwgSW50ZXJydXB0IDIKPiArIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNDkgMSCgIKAgoC8vIEV4dGVybmFs IEludGVycnVwdCAzCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIDUwIDE+OyCgIKAvLyBFeHRlcm5hbCBJbnRlcnJ1cHQgNC0xNQo+ICsgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIH07CgpUaGlzIGRvZXNuJ3QgbG9vayBxdWl0ZSByaWdodC4uLi4gL21lIGdvZXMg dG8gbG9vayBhdCB0aGUgNTU1NApyZWZlcmVuY2UgbWFudWFsLi4uLgoKT2theSwgc28gYWxsIHRo ZSBleHRlcm5hbCBJUlFzIGdvIHRocm91Z2ggdGhlIFNJVSB0aGVuLCBldmVuIHRob3VnaAp0aGUg Zmlyc3QgNCBnZXQgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGludGM/ICBBbmQgSSBz ZWUgdGhhdAphbGwgdGhlIGxldmVsL2VkZ2Ugc2Vuc2luZyBhbmQgbWFza2luZy9hY2tub3dsZWRn aW5nIGlzIGRvbmUgYXQgdGhlClNJVSBsZXZlbCwgbm90IHRoZSBpbnRjIGxldmVsLCBjb3JyZWN0 PyAgU28sIHdoYXQgeW91IGVmZmVjdGl2ZWx5IGhhdmUKaXMgdGhlIFNJVSBpcyAqYW5vdGhlciog aW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdCBpcyBjYXNjYWRlZCB0byB0aGUKaW50Yy4gIFRoZXJl Zm9yZSB5b3UgbmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byB0aGlzIG5vZGU6CgojaW50ZXJy dXB0LWNlbGxzID0gPDI+OyAgIC8vIGNlbGwxOmV4dGlycSMsIGNlbGwyOmxldmVsL2VkZ2UgZmxh Z3MKaW50ZXJydXB0LWNvbnRyb2xsZXI7CgpBbHNvIGdpdmUgdGhlIG5vZGUgYSBsYWJlbCBzbyB0 aGF0IG5vZGVzIGZvciBleHRlcm5hbCBkZXZpY2VzIGNhbgpyZWZlcmVuY2UgaXQgZm9yIGhvb2tp bmcgdXAgZXh0ZXJuYWwgaXJxcyBieSBvdmVycmlkaW5nIHRoZSB0b3AtbGV2ZWwKaW50ZXJydXB0 LXBhcmVudCBwcm9wZXJ0eS4KCkFsc28sIGl0IHdvdWxkIGFwcGVhciB0aGF0IGludGMgaW50ZXJy dXB0cyBkb24ndCBoYXZlIGFueSBsZXZlbC9lZGdlCmNvbmZpZ3VyYXRpb24gYXNzb2NpYXRlZCB3 aXRoIHRoZW0uICBUaGV5IGFyZSBlaXRoZXIgYXNzZXJ0ZWQsIG9yIHRoZXkKYXJlIG5vdCwgY29y cmVjdD8gIEF0IHRoZSBtb21lbnQgeW91J3JlIHNwZWNpZnlpbmcgZXZlcnkgaW50YwppbnRlcnJ1 cHQgd2l0aCAyIGNlbGxzLCBhbmQgdGhlIDJuZCBjZWxsIGlzIGFsd2F5cyAnMScuICBJIHRoaW5r IHlvdQpjYW4gY2hhbmdlICNpbnRlcnJ1cHQtY2VsbHMgdG8gPDE+IGluIHRoZSBpbnRjIG5vZGUg YW5kIGRyb3AgdGhlICcxJwpldmVyeXdoZXJlLgoKV2hlbiB5b3Ugd3JpdGUgeW91ciBpbnRjIGRy aXZlciwgeW91J2xsIGFsc28gbmVlZCB0byB3cml0ZSB0aGUKY2FzY2FkZWQgZHJpdmVyIGZvciB0 aGUgZXh0ZXJuYWwgSVJRcy4KCj4gKwo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGVtaW9zQDNm YTAwMDAgeyCgIKAgoCCgIC8vIE1vZHVsYXIgVGltZXIgU3lzdGVtCj4gKyCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCBjb21wYXRpYmxlID0gImZzbCxtcGM1NTU0LWVtaW9zIjsKPiArIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIHJlZyA9IDwweDAzZmEwMDAwIDB4NDAwMD47Cj4g KyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBpbnRlcnJ1cHRzID0gPDUxIDEgoCCgIKAv LyBDaGFubmVsIDAKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgNTIgMSCgIKAgoC8vIENoYW5uZWwgMQo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCA1MyAxIKAgoCCgLy8gQ2hhbm5lbCAyCj4gKyCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDU0IDEgoCCgIKAvLyBDaGFubmVsIDMKPiAr IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNTUgMSCgIKAgoC8v IENoYW5uZWwgNAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCA1NiAxIKAgoCCgLy8gQ2hhbm5lbCA1Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIDU3IDEgoCCgIKAvLyBDaGFubmVsIDYKPiArIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNTggMSCgIKAgoC8vIENoYW5uZWwgNwo+ICsg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCA1OSAxIKAgoCCgLy8g Q2hhbm5lbCA4Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IDYwIDEgoCCgIKAvLyBDaGFubmVsIDkKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgNjEgMSCgIKAgoC8vIENoYW5uZWwgMTAKPiArIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNjIgMSCgIKAgoC8vIENoYW5uZWwgMTEKPiAr IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNjMgMSCgIKAgoC8v IENoYW5uZWwgMTIKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgNjQgMSCgIKAgoC8vIENoYW5uZWwgMTMKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgNjUgMSCgIKAgoC8vIENoYW5uZWwgMTQKPiArIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNjYgMSCgIKAgoC8vIENoYW5uZWwgMTUK PiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjAyIDEgoCCg IC8vIENoYW5uZWwgMTYKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgMjAzIDEgoCCgIC8vIENoYW5uZWwgMTcKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgMjA0IDEgoCCgIC8vIENoYW5uZWwgMTgKPiArIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjA1IDEgoCCgIC8vIENoYW5uZWwg MTkKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjA2IDEg oCCgIC8vIENoYW5uZWwgMjAKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgMjA3IDEgoCCgIC8vIENoYW5uZWwgMjEKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjA4IDEgoCCgIC8vIENoYW5uZWwgMjIKPiArIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjA5IDE+OyCgIC8vIENoYW5u ZWwgMjMKClRoZXNlIGxvbmcgbGlzdHMgYm90aGVyIG1lLCBidXQgbG9va2luZyBhdCB0aGUgbWFu dWFsIHRoZXkgc2VlbSB0bwpkZXNjcmliZSB0aGUgYWN0dWFsIGhhcmR3YXJlIGFyY2hpdGVjdHVy ZSwgc28gSSB0aGluayB0aGV5IGFyZQpwcm9iYWJseSBmaW5lLiAgQnV0IHlvdSBtYXkgd2FudCB0 byBjb21wYWN0IHlvdXIgZm9ybWF0dGluZyBzb21ld2hhdC4KWW91IGNhbiBwcm9iYWJseSBsaXN0 IG1vcmUgdGhhbiBvbmUgY2hhbm5lbCBwZXIKc291cmNlIGxpbmUgaW4gdGhlIGZpbGUuCgpEaXR0 byB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBmaWxlLgoKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCB9Owo+ICsKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBldHB1QDNmYzAwMDAgeyCgIKAgoCCg IKAvLyBFbmhhbmNlZCBUaW1lIFByb2Nlc3NpbmcgVW5pdAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgY29tcGF0aWJsZSA9ICJmc2wsbXBjNTU1NC1ldHB1IjsKPiArIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIHJlZyA9IDwweDAzZmMwMDAwIDB4NDAwMD47Cj4gKyCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCBpbnRlcnJ1cHRzID0gPDY3IDEgoCCgIKAvLyBHbG9i YWwgRXhjZXB0aW9uCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIDY4IDEgoCCgIKAvLyBBIENoYW5uZWwgMAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCA2OSAxIKAgoCCgLy8gQSBDaGFubmVsIDEKPiArIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNzAgMSCgIKAgoC8vIEEgQ2hhbm5l bCAyCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDcxIDEg oCCgIKAvLyBBIENoYW5uZWwgMwo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCA3MiAxIKAgoCCgLy8gQSBDaGFubmVsIDQKPiArIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgNzMgMSCgIKAgoC8vIEEgQ2hhbm5lbCA1Cj4gKyCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDc0IDEgoCCgIKAvLyBB IENoYW5uZWwgNgo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCA3NSAxIKAgoCCgLy8gQSBDaGFubmVsIDcKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgNzYgMSCgIKAgoC8vIEEgQ2hhbm5lbCA4Cj4gKyCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDc3IDEgoCCgIKAvLyBBIENoYW5uZWwg OQo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCA3OCAxIKAg oCCgLy8gQSBDaGFubmVsIDEwCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIDc5IDEgoCCgIKAvLyBBIENoYW5uZWwgMTEKPiArIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgODAgMSCgIKAgoC8vIEEgQ2hhbm5lbCAxMgo+ICsg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCA4MSAxIKAgoCCgLy8g QSBDaGFubmVsIDEzCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIDgyIDEgoCCgIKAvLyBBIENoYW5uZWwgMTQKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgODMgMSCgIKAgoC8vIEEgQ2hhbm5lbCAxNQo+ICsgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCA4NCAxIKAgoCCgLy8gQSBDaGFu bmVsIDE2Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDg1 IDEgoCCgIKAvLyBBIENoYW5uZWwgMTcKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgODYgMSCgIKAgoC8vIEEgQ2hhbm5lbCAxOAo+ICsgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCA4NyAxIKAgoCCgLy8gQSBDaGFubmVsIDE5 Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDg4IDEgoCCg IKAvLyBBIENoYW5uZWwgMjAKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgODkgMSCgIKAgoC8vIEEgQ2hhbm5lbCAyMQo+ICsgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCA5MCAxIKAgoCCgLy8gQSBDaGFubmVsIDIyCj4gKyCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDkxIDEgoCCgIKAvLyBB IENoYW5uZWwgMjMKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgOTIgMSCgIKAgoC8vIEEgQ2hhbm5lbCAyNAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCA5MyAxIKAgoCCgLy8gQSBDaGFubmVsIDI1Cj4gKyCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDk0IDEgoCCgIKAvLyBBIENoYW5u ZWwgMjYKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgOTUg MSCgIKAgoC8vIEEgQ2hhbm5lbCAyNwo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCA5NiAxIKAgoCCgLy8gQSBDaGFubmVsIDI4Cj4gKyCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDk3IDEgoCCgIKAvLyBBIENoYW5uZWwgMjkK PiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgOTggMSCgIKAg oC8vIEEgQ2hhbm5lbCAzMAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCA5OSAxIKAgoCCgLy8gQSBDaGFubmVsIDMxCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDI0MyAxIKAgoCAvLyBCIENoYW5uZWwgMAo+ICsgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNDQgMSCgIKAgLy8gQiBD aGFubmVsIDEKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg MjQ1IDEgoCCgIC8vIEIgQ2hhbm5lbCAyCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIDI0NiAxIKAgoCAvLyBCIENoYW5uZWwgMwo+ICsgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNDcgMSCgIKAgLy8gQiBDaGFubmVsIDQK PiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjQ4IDEgoCCg IC8vIEIgQ2hhbm5lbCA1Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIDI0OSAxIKAgoCAvLyBCIENoYW5uZWwgNgo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNTAgMSCgIKAgLy8gQiBDaGFubmVsIDcKPiArIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjUxIDEgoCCgIC8vIEIgQ2hh bm5lbCA4Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDI1 MiAxIKAgoCAvLyBCIENoYW5uZWwgOQo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCAyNTMgMSCgIKAgLy8gQiBDaGFubmVsIDEwCj4gKyCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDI1NCAxIKAgoCAvLyBCIENoYW5uZWwgMTEK PiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjU1IDEgoCCg IC8vIEIgQ2hhbm5lbCAxMgo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCAyNTYgMSCgIKAgLy8gQiBDaGFubmVsIDEzCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDI1NyAxIKAgoCAvLyBCIENoYW5uZWwgMTQKPiArIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjU4IDEgoCCgIC8vIEIg Q2hhbm5lbCAxNQo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCAyNTkgMSCgIKAgLy8gQiBDaGFubmVsIDE2Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIDI2MCAxIKAgoCAvLyBCIENoYW5uZWwgMTcKPiArIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjYxIDEgoCCgIC8vIEIgQ2hhbm5l bCAxOAo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNjIg MSCgIKAgLy8gQiBDaGFubmVsIDE5Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIDI2MyAxIKAgoCAvLyBCIENoYW5uZWwgMjAKPiArIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjY0IDEgoCCgIC8vIEIgQ2hhbm5lbCAyMQo+ ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNjUgMSCgIKAg Ly8gQiBDaGFubmVsIDIyCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIDI2NiAxIKAgoCAvLyBCIENoYW5uZWwgMjMKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgMjY3IDEgoCCgIC8vIEIgQ2hhbm5lbCAyNAo+ICsgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNjggMSCgIKAgLy8gQiBD aGFubmVsIDI1Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IDI2OSAxIKAgoCAvLyBCIENoYW5uZWwgMjYKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgMjcwIDEgoCCgIC8vIEIgQ2hhbm5lbCAyNwo+ICsgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNzEgMSCgIKAgLy8gQiBDaGFubmVs IDI4Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIDI3MiAx IKAgoCAvLyBCIENoYW5uZWwgMjkKPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIKAgMjczIDEgoCCgIC8vIEIgQ2hhbm5lbCAzMAo+ICsgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCAyNzQgMT47IKAgLy8gQiBDaGFubmVsIDMxCgpB cmUgQSBhbmQgQiB0d28gaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGhhcmR3YXJlIGJsb2NrPyAgQ29u c2lkZXIgaGF2aW5nCmEgc3Vibm9kZSBmb3IgZWFjaCBpbnN0YW5jZSB0byBnaXZlIHNvbWUgbG9n aWNhbCBzZXBhcmF0aW9uIHRvIHRoaXMKbGlzdCBhbmQgYXNzb2NpYXRlIHJlZ2lzdGVyIHJhbmdl cyB3aXRoIGluc3RhbmNlcy4gIERvaW5nIGl0IHRoYXQgd2F5CmFsc28gbWFrZXMgaXQgZWFzaWVy IGZvciBleHRlcm5hbCBkZXZpY2Ugbm9kZXMgdG8gZGVzY3JpYmUgYW4KYXR0YWNobWVudCB0byBh IHBhcnRpY3VsYXIgY2hhbm5lbC4KCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgfTsKPiArCj4g KyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgZXRwdWRhdGFAM2ZjODAwMCB7IKAgoCCgLy8gZVRQVSBT aGFyZWQgRGF0YSBNZW1vcnkgKFBhcmFtZXRlciBSQU0pCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCCgIKAgoCBjb21wYXRpYmxlID0gImZzbCxtcGM1NTU0LWV0cHVkYXRhIjsKPiArIKAgoCCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIHJlZyA9IDwweDAzZmM4MDAwIDB4NDAwMD47Cj4gKyCg IKAgoCCgIKAgoCCgIKAgoCCgIKAgfTsKPiArCj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgZXRw dWRhdGFAM2ZjYzAwMCB7IKAgoCCgLy8gZVRQVSBTaGFyZWQgRGF0YSBNZW1vcnkgKFBhcmFtZXRl ciBSQU0pIG1pcnJvcgo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgY29tcGF0aWJs ZSA9ICJmc2wsbXBjNTU1NC1ldHB1ZGF0YSI7Cj4gKyCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IKAgoCByZWcgPSA8MHgwM2ZjYzAwMCAweDQwMDA+Owo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCg IH07Cj4gKwo+ICsgoCCgIKAgoCCgIKAgoCCgIKAgoCCgIGV0cHVjb2RlQDNmZDAwMDAgeyCgIKAg oCCgIKAgoCCgLy8gZVRQVSBTaGFyZWQgQ29kZSBSQU0KPiArIKAgoCCgIKAgoCCgIKAgoCCgIKAg oCCgIKAgoCCgIGNvbXBhdGlibGUgPSAiZnNsLG1wYzU1NTQtZXRwdWNvZGUiOwo+ICsgoCCgIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCCgIKAgcmVnID0gPDB4MDNmZDAwMDAgMHg0MDAwPjsKPiArIKAg oCCgIKAgoCCgIKAgoCCgIKAgoCB9OwoKU2hvdWxkIGFsbCB0aGlzIGV0cHUgc3R1ZmYgYmUgcGFy dCBvZiB0aGUgZXRwdSBub2RlPwoKVGhpcyBsb29rcyBsaWtlIGl0IGlzIGdldHRpbmcgY2xvc2Uu ICBPbmNlIHlvdSd2ZSBnb3QgYSB2ZXJzaW9uIHRoYXQKbG9va3MgZ29vZCB0byBldmVyeW9uZSwg eW91IGFsc28gbmVlZCB0byBkb2N1bWVudCB3aGF0IHRoZSBuZXcKYmluZGluZ3MgbWVhbi4gIEVz c2VudGlhbGx5IHRoaXMgdGFzayBpbnZvbHZlcyB3cml0aW5nIGRvd24gYWxsIHRoZQpuZXcgY29t cGF0aWJsZSBwcm9wZXJ0eSB2YWx1ZXMgdGhhdCB5b3UndmUgZGVmaW5lZCwgd2hhdCBkZXZpY2Ug ZWFjaApvbmUgZGVzY3JpYmVzLCBhbmQgd2hhdCBwcm9wZXJ0aWVzL3N1Ym5vZGVzIGFyZSBleHBl Y3RlZCBmb3IgZWFjaCBuZXcKY29tcGF0aWJsZSB2YWx1ZS4gIERvY3VtZW50YXRpb24gY3VycmVu dGx5IGdvZXMgaW4gdGhlCkRvY3VtZW50YXRpb24vcG93ZXJwYy9kdHMtYmluZGluZ3MgZGlyZWN0 b3J5LCBhbmQgeW91IGNhbiBzZWUgbG90cyBvZgpleGFtcGxlcyB0aGVyZS4gIChIb3dldmVyLCBJ J20gaG9waW5nIHRvIG1vdmluZyBpdCB0bwpodHRwOi8vZGV2aWNldHJlZS5vcmcgaW4gdGhlIG5l YXIgZnV0dXJlIHNvIGl0IGNhbiBiZSBzaGFyZWQgYnkgb3RoZXIKT1Nlcy4gIEkndmUgY3VycmVu dGx5IGdvdCBhIHRlc3Qgc2l0ZSB1cCBhdCBodHRwOi8vZmR0LnNlY3JldGxhYi5jYSkuCgpUaGUg cnVsZSBpcyB0aGF0IHdlIHdpbGwgbm90IG1lcmdlIGRyaXZlcnMgdXNpbmcgbmV3IE9GIGJpbmRp bmdzIHVudGlsCnRob3NlIGJpbmRpbmdzIGhhdmUgYmVlbiBkb2N1bWVudGVkIGFuZCByZXZpZXdl ZC4KCkNoZWVycywKZy4K ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-17 19:02 ` Grant Likely @ 2010-03-22 6:28 ` Németh Márton 2010-03-22 14:59 ` Grant Likely 2010-03-30 6:54 ` Németh Márton 1 sibling, 1 reply; 25+ messages in thread From: Németh Márton @ 2010-03-22 6:28 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Development, David Gibson Hi Grant, thanks for the comments, I solved some of the points you mentioned. I need some more time to work on the others. In the meantime I send the intermediate version. Grant Likely wrote: > 2010/3/13 Németh Márton <nm127@freemail.hu>: [...] >> + memory@40000000 { >> + device_type = "memory"; >> + reg = <0x40000000 0x10000>; // 32KiB internal SRAM >> + }; > > Oh.... this is the small SRAM. yeah, you should move this under the > appropriate bridge node, remove the device_type property, and add a > compatible property. Memory nodes at the root like this are used to > describe what is basically main memory (what Linux will execute out > of). You'll want a new memory node for the external ram hooked up to > the 5554. Yes, it is the small one (actually 64KiB, I corrected the comment also). I added the external memory of the MPC5554DEMO evaluation board which has a size of 512KiB. Would it be possible to program the uncompressed kernel to the FLASH so it can run directly from there? I guess for the code and the constant sections the FLASH could be a good place. Then cstart has to initialize the initialized variables by copying data from FLASH to RAM and fill the BSS area with zero. [...] >> + siu@3f89000 { // System Integration Unit >> + compatible = "fsl,mpc5554-siu"; >> + reg = <0x03f90000 0x4000>; >> + interrupts = <45 1 // External Interrupt Overrun 0-15 >> + 46 1 // External Interrupt 0 >> + 47 1 // External Interrupt 1 >> + 48 1 // External Interrupt 2 >> + 49 1 // External Interrupt 3 >> + 50 1>; // External Interrupt 4-15 >> + }; > > This doesn't look quite right.... /me goes to look at the 5554 > reference manual.... > > Okay, so all the external IRQs go through the SIU then, even though > the first 4 get passed straight through to the intc? And I see that > all the level/edge sensing and masking/acknowledging is done at the > SIU level, not the intc level, correct? So, what you effectively have > is the SIU is *another* interrupt controller that is cascaded to the > intc. Therefore you need to add the following to this node: > > #interrupt-cells = <2>; // cell1:extirq#, cell2:level/edge flags > interrupt-controller; > > Also give the node a label so that nodes for external devices can > reference it for hooking up external irqs by overriding the top-level > interrupt-parent property. > > Also, it would appear that intc interrupts don't have any level/edge > configuration associated with them. They are either asserted, or they > are not, correct? At the moment you're specifying every intc > interrupt with 2 cells, and the 2nd cell is always '1'. I think you > can change #interrupt-cells to <1> in the intc node and drop the '1' > everywhere. > > When you write your intc driver, you'll also need to write the > cascaded driver for the external IRQs. I tried to solve this point but I'm not quite sure whether the SIU interrupt numbers shall be kept on the siu@3f89000 node or not. >> + emios@3fa0000 { // Modular Timer System >> + compatible = "fsl,mpc5554-emios"; >> + reg = <0x03fa0000 0x4000>; >> + interrupts = <51 1 // Channel 0 >> + 52 1 // Channel 1 >> + 53 1 // Channel 2 >> + 54 1 // Channel 3 >> + 55 1 // Channel 4 >> + 56 1 // Channel 5 >> + 57 1 // Channel 6 >> + 58 1 // Channel 7 >> + 59 1 // Channel 8 >> + 60 1 // Channel 9 >> + 61 1 // Channel 10 >> + 62 1 // Channel 11 >> + 63 1 // Channel 12 >> + 64 1 // Channel 13 >> + 65 1 // Channel 14 >> + 66 1 // Channel 15 >> + 202 1 // Channel 16 >> + 203 1 // Channel 17 >> + 204 1 // Channel 18 >> + 205 1 // Channel 19 >> + 206 1 // Channel 20 >> + 207 1 // Channel 21 >> + 208 1 // Channel 22 >> + 209 1>; // Channel 23 > > These long lists bother me, but looking at the manual they seem to > describe the actual hardware architecture, so I think they are > probably fine. But you may want to compact your formatting somewhat. > You can probably list more than one channel per > source line in the file. > > Ditto through the rest of the file. I would keep the list like this because in this case it is easy to find which comment belongs to which interrupt number. Otherwise one would need to count the interrupt numbers and the comment to find out which number match which comment. >> + etpu@3fc0000 { // Enhanced Time Processing Unit >> + compatible = "fsl,mpc5554-etpu"; >> + reg = <0x03fc0000 0x4000>; >> + interrupts = <67 1 // Global Exception >> + 68 1 // A Channel 0 >> + 69 1 // A Channel 1 >> + 70 1 // A Channel 2 >> + 71 1 // A Channel 3 >> + 72 1 // A Channel 4 >> + 73 1 // A Channel 5 >> + 74 1 // A Channel 6 >> + 75 1 // A Channel 7 >> + 76 1 // A Channel 8 >> + 77 1 // A Channel 9 >> + 78 1 // A Channel 10 >> + 79 1 // A Channel 11 >> + 80 1 // A Channel 12 >> + 81 1 // A Channel 13 >> + 82 1 // A Channel 14 >> + 83 1 // A Channel 15 >> + 84 1 // A Channel 16 >> + 85 1 // A Channel 17 >> + 86 1 // A Channel 18 >> + 87 1 // A Channel 19 >> + 88 1 // A Channel 20 >> + 89 1 // A Channel 21 >> + 90 1 // A Channel 22 >> + 91 1 // A Channel 23 >> + 92 1 // A Channel 24 >> + 93 1 // A Channel 25 >> + 94 1 // A Channel 26 >> + 95 1 // A Channel 27 >> + 96 1 // A Channel 28 >> + 97 1 // A Channel 29 >> + 98 1 // A Channel 30 >> + 99 1 // A Channel 31 >> + 243 1 // B Channel 0 >> + 244 1 // B Channel 1 >> + 245 1 // B Channel 2 >> + 246 1 // B Channel 3 >> + 247 1 // B Channel 4 >> + 248 1 // B Channel 5 >> + 249 1 // B Channel 6 >> + 250 1 // B Channel 7 >> + 251 1 // B Channel 8 >> + 252 1 // B Channel 9 >> + 253 1 // B Channel 10 >> + 254 1 // B Channel 11 >> + 255 1 // B Channel 12 >> + 256 1 // B Channel 13 >> + 257 1 // B Channel 14 >> + 258 1 // B Channel 15 >> + 259 1 // B Channel 16 >> + 260 1 // B Channel 17 >> + 261 1 // B Channel 18 >> + 262 1 // B Channel 19 >> + 263 1 // B Channel 20 >> + 264 1 // B Channel 21 >> + 265 1 // B Channel 22 >> + 266 1 // B Channel 23 >> + 267 1 // B Channel 24 >> + 268 1 // B Channel 25 >> + 269 1 // B Channel 26 >> + 270 1 // B Channel 27 >> + 271 1 // B Channel 28 >> + 272 1 // B Channel 29 >> + 273 1 // B Channel 30 >> + 274 1>; // B Channel 31 > > Are A and B two instances of the same hardware block? Consider having > a subnode for each instance to give some logical separation to this > list and associate register ranges with instances. Doing it that way > also makes it easier for external device nodes to describe an > attachment to a particular channel. I'll try to do this later, I need some more time to do this. > >> + }; >> + >> + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) >> + compatible = "fsl,mpc5554-etpudata"; >> + reg = <0x03fc8000 0x4000>; >> + }; >> + >> + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror >> + compatible = "fsl,mpc5554-etpudata"; >> + reg = <0x03fcc000 0x4000>; >> + }; >> + >> + etpucode@3fd0000 { // eTPU Shared Code RAM >> + compatible = "fsl,mpc5554-etpucode"; >> + reg = <0x03fd0000 0x4000>; >> + }; > > Should all this etpu stuff be part of the etpu node? > > This looks like it is getting close. Once you've got a version that > looks good to everyone, you also need to document what the new > bindings mean. Essentially this task involves writing down all the > new compatible property values that you've defined, what device each > one describes, and what properties/subnodes are expected for each new > compatible value. Documentation currently goes in the > Documentation/powerpc/dts-bindings directory, and you can see lots of > examples there. (However, I'm hoping to moving it to > http://devicetree.org in the near future so it can be shared by other > OSes. I've currently got a test site up at http://fdt.secretlab.ca). > > The rule is that we will not merge drivers using new OF bindings until > those bindings have been documented and reviewed. The documentation is still missing from this version. Regards, Márton Németh --- From: Márton Németh <nm127@freemail.hu> Add device tree for Freescale MPC5554. Signed-off-by: Márton Németh <nm127@freemail.hu> --- diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux-2.6.33/arch/powerpc/boot/dts/mpc5554.dts --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.33/arch/powerpc/boot/dts/mpc5554.dts 2010-03-22 07:09:02.000000000 +0100 @@ -0,0 +1,488 @@ +/* + * Freescale MPC5554 Device Tree Source + * + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf + * - Block Diagram: page 1-3, Figure 1-1 + * - Memory Map: page 1-21, Table 1-2 + * - Interrupt Request Sources: page 10-16, Table 10-9 + * + * This device tree also contains external components found on MPC5554DEMO + * http://www.axman.com/files/MPC5554DEMO_man_G.pdf + * http://www.axman.com/files/MPC5554DEMO_SCH_G.pdf + * + * Copyright 2010 Márton Németh + * Márton Németh <nm127@freemail.hu> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC5554"; + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&intc>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "PowerPC,5554", "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; + reg = <0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <0x8000>; // L1, 32KiB + i-cache-size = <0x8000>; // L1, 32KiB + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory@20000000 { + device_type = "memory"; + reg = <0x20000000 0x80000>; // 512KiB external SRAM: ISSI IS61SF12832 + // CS0 or CS1 selectable by the SRAM_SEL jumper + }; + + xbar@fff04000 { // System Bus Crossbar Switch (XBAR) + compatible = "fsl,mpc5554-xbar"; + #address-cells = <1>; + #size-cells = <1>; + // The full memory range is covered by XBAR + ranges; + reg = <0xfff04000 0x4000>; + + flash@0 { // read-only FLASH + compatible = "fsl,mpc5554-flash"; + reg = <0x00000000 0x200000>; // 2MiB internal FLASH + }; + + memory@40000000 { + compatible = "fsl,mpc5554-sram"; + reg = <0x40000000 0x10000>; // 64KiB internal SRAM + }; + + bridge@c3f00000 { + compatible = "fsl,mpc5554-pbridge-a"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xc0000000 0x20000000>; + reg = <0xc3f00000 0x4000>; + + fmpll@3f80000 { // Frequency Modulated PLL + compatible = "fsl,mpc5554-fmpll"; + reg = <0x03f80000 0x4000>; + interrupts = <43 // Loss of Clock + 44>; // Loss of Lock + }; + + flashconfig@3f88000 { // Flash Configuration + compatible = "fsl,mpc5554-flashconfig"; + reg = <0x03f88000 0x4000>; + }; + + siuintc: siu@3f89000 { // System Integration Unit + compatible = "fsl,mpc5554-siu"; + reg = <0x03f90000 0x4000>; + + // SIU is an interrupt controller by means that it handles + // the external interrupts + #interrupt-cells = <2>; // cell 1: extirq#, cell 2: level/edge flags + interrupt-controller; + interrupts = <45 1 // External Interrupt Overrun 0-15 + 46 1 // External Interrupt 0 + 47 1 // External Interrupt 1 + 48 1 // External Interrupt 2 + 49 1 // External Interrupt 3 + 50 1>; // External Interrupt 4-15 + }; + + emios@3fa0000 { // Modular Timer System + compatible = "fsl,mpc5554-emios"; + reg = <0x03fa0000 0x4000>; + interrupts = <51 // Channel 0 + 52 // Channel 1 + 53 // Channel 2 + 54 // Channel 3 + 55 // Channel 4 + 56 // Channel 5 + 57 // Channel 6 + 58 // Channel 7 + 59 // Channel 8 + 60 // Channel 9 + 61 // Channel 10 + 62 // Channel 11 + 63 // Channel 12 + 64 // Channel 13 + 65 // Channel 14 + 66 // Channel 15 + 202 // Channel 16 + 203 // Channel 17 + 204 // Channel 18 + 205 // Channel 19 + 206 // Channel 20 + 207 // Channel 21 + 208 // Channel 22 + 209>; // Channel 23 + }; + + etpu@3fc0000 { // Enhanced Time Processing Unit + compatible = "fsl,mpc5554-etpu"; + reg = <0x03fc0000 0x4000>; + interrupts = <67 // Global Exception + 68 // A Channel 0 + 69 // A Channel 1 + 70 // A Channel 2 + 71 // A Channel 3 + 72 // A Channel 4 + 73 // A Channel 5 + 74 // A Channel 6 + 75 // A Channel 7 + 76 // A Channel 8 + 77 // A Channel 9 + 78 // A Channel 10 + 79 // A Channel 11 + 80 // A Channel 12 + 81 // A Channel 13 + 82 // A Channel 14 + 83 // A Channel 15 + 84 // A Channel 16 + 85 // A Channel 17 + 86 // A Channel 18 + 87 // A Channel 19 + 88 // A Channel 20 + 89 // A Channel 21 + 90 // A Channel 22 + 91 // A Channel 23 + 92 // A Channel 24 + 93 // A Channel 25 + 94 // A Channel 26 + 95 // A Channel 27 + 96 // A Channel 28 + 97 // A Channel 29 + 98 // A Channel 30 + 99 // A Channel 31 + 243 // B Channel 0 + 244 // B Channel 1 + 245 // B Channel 2 + 246 // B Channel 3 + 247 // B Channel 4 + 248 // B Channel 5 + 249 // B Channel 6 + 250 // B Channel 7 + 251 // B Channel 8 + 252 // B Channel 9 + 253 // B Channel 10 + 254 // B Channel 11 + 255 // B Channel 12 + 256 // B Channel 13 + 257 // B Channel 14 + 258 // B Channel 15 + 259 // B Channel 16 + 260 // B Channel 17 + 261 // B Channel 18 + 262 // B Channel 19 + 263 // B Channel 20 + 264 // B Channel 21 + 265 // B Channel 22 + 266 // B Channel 23 + 267 // B Channel 24 + 268 // B Channel 25 + 269 // B Channel 26 + 270 // B Channel 27 + 271 // B Channel 28 + 272 // B Channel 29 + 273 // B Channel 30 + 274>; // B Channel 31 + }; + + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fc8000 0x4000>; + }; + + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fcc000 0x4000>; + }; + + etpucode@3fd0000 { // eTPU Shared Code RAM + compatible = "fsl,mpc5554-etpucode"; + reg = <0x03fd0000 0x4000>; + }; + }; + + bridge@fff00000 { + compatible = "fsl,mpc5554-pbridge-b"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xe0000000 0x20000000>; + reg = <0xfff00000 0x4000>; + + ecsm@fff40000 { // Error Correction Status Module (ECSM) + compatible = "fsl,mpc5554-ecsm"; + reg = <0xfff40000 0x4000>; + interrupts = <8 // Software Watchdog Interrupt + 9>; // Combined: Internal SRAM Non-Correctable Error, Flash Non-Correctable Error + }; + + edma@fff44000 { // Enhanced DMA Controller (eDMA) + compatible = "fsl,mpc5554-edma"; + reg = <0xfff44000 0x4000>; + interrupts = <10 // Channel Error 0-31 + 11 // Channel 0 + 12 // Channel 1 + 13 // Channel 2 + 14 // Channel 3 + 15 // Channel 4 + 16 // Channel 5 + 17 // Channel 6 + 18 // Channel 7 + 19 // Channel 8 + 20 // Channel 9 + 21 // Channel 10 + 22 // Channel 11 + 23 // Channel 12 + 24 // Channel 13 + 25 // Channel 14 + 26 // Channel 15 + 27 // Channel 16 + 28 // Channel 17 + 29 // Channel 18 + 30 // Channel 19 + 31 // Channel 20 + 32 // Channel 21 + 33 // Channel 22 + 34 // Channel 23 + 35 // Channel 24 + 36 // Channel 25 + 37 // Channel 26 + 38 // Channel 27 + 39 // Channel 28 + 40 // Channel 29 + 41 // Channel 30 + 42 // Channel 31 + 210 // Channel Error 32-63 + 211 // Channel 32 + 212 // Channel 33 + 213 // Channel 34 + 214 // Channel 35 + 215 // Channel 36 + 216 // Channel 37 + 217 // Channel 38 + 218 // Channel 39 + 219 // Channel 40 + 220 // Channel 41 + 221 // Channel 42 + 222 // Channel 43 + 223 // Channel 44 + 224 // Channel 45 + 225 // Channel 46 + 226 // Channel 47 + 227 // Channel 48 + 228 // Channel 49 + 229 // Channel 50 + 230 // Channel 51 + 231 // Channel 52 + 232 // Channel 53 + 233 // Channel 54 + 234 // Channel 55 + 235 // Channel 56 + 236 // Channel 57 + 237 // Channel 58 + 238 // Channel 59 + 239 // Channel 60 + 240 // Channel 61 + 241 // Channel 62 + 242>; // Channel 63 + }; + + intc: intc@fff48000 { // Interrupt Controller (INTC) + compatible = "fsl,mpc5554-intc"; + interrupt-controller; + #interrupt-cells = <1>; + reg = <0xfff48000 0x4000>; + }; + + eqadc@fff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) + compatible = "fsl,mpc5554-eqacd"; + reg = <0xfff80000 0x4000>; + interrupts = <100 // Combined: Trigger Overrun, Receive FIFO Overflow, Command FIFO Underflow + 101 // Command FIFO 0 Non-Coherency + 102 // Command FIFO 0 Pause + 103 // Command FIFO 0 End of Queue + 104 // Command FIFO 0 Fill + 105 // Command FIFO 0 Drain + 106 // Command FIFO 1 Non-Coherency + 107 // Command FIFO 1 Pause + 108 // Command FIFO 1 End of Queue + 109 // Command FIFO 1 Fill + 111 // Command FIFO 1 Drain + 111 // Command FIFO 2 Non-Coherency + 112 // Command FIFO 2 Pause + 113 // Command FIFO 2 End of Queue + 114 // Command FIFO 2 Fill + 115 // Command FIFO 2 Drain + 116 // Command FIFO 3 Non-Coherency + 117 // Command FIFO 3 Pause + 118 // Command FIFO 3 End of Queue + 119 // Command FIFO 3 Fill + 120 // Command FIFO 3 Drain + 121 // Command FIFO 4 Non-Coherency + 122 // Command FIFO 4 Pause + 123 // Command FIFO 4 End of Queue + 124 // Command FIFO 4 Fill + 125 // Command FIFO 4 Drain + 126 // Command FIFO 5 Non-Coherency + 127 // Command FIFO 5 Pause + 128 // Command FIFO 5 End of Queue + 129 // Command FIFO 5 Fill + 130>; // Command FIFO 5 Drain + }; + + dspi@fff90000 { // Deserial Serial Peripheral Interface (DSPI_A) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff90000 0x4000>; + interrupts = <275 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 276 // Transmit FIFO End of Queue + 277 // Transmit FIFO Fill Flag + 278 // Transfer Complete + 279>; // Receive FIFO Drain + }; + + dspi@fff94000 { // Deserial Serial Peripheral Interface (DSPI_B) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff94000 0x4000>; + interrupts = <131 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 132 // Transmit FIFO End of Queue + 133 // Transmit FIFO Fill Flag + 134 // Transfer Complete + 135>; // Receive FIFO Drain + }; + + dspi@fff98000 { // Deserial Serial Peripheral Interface (DSPI_C) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff98000 0x4000>; + interrupts = <136 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 137 // Transmit FIFO End of Queue + 138 // Transmit FIFO Fill Flag + 139 // Transfer Complete + 140>; // Receive FIFO Drain + }; + + dspi@fff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff9c000 0x4000>; + interrupts = <141 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 142 // Transmit FIFO End of Queue + 143 // Transmit FIFO Fill Flag + 144 // Transfer Complete + 145>; // Receive FIFO Drain + }; + + esci@fffb0000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb0000 0x4000>; + interrupts = <146>; // Combined request for all SCI_A interrupts + }; + + esci@fffb4000 { // Serial Communications Interface (SCI_B) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb4000 0x4000>; + interrupts = <149>; // Combined request for all SCI_A interrupts + }; + + can@fffc0000 { // Controller Area Network (FlexCAN_A) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc0000 0x4000>; + interrupts = <152 // Bus off + 153 // Error + 155 // Buffer 0 + 156 // Buffer 1 + 157 // Buffer 2 + 158 // Buffer 3 + 159 // Buffer 4 + 160 // Buffer 5 + 161 // Buffer 6 + 162 // Buffer 7 + 163 // Buffer 8 + 164 // Buffer 9 + 165 // Buffer 10 + 166 // Buffer 11 + 167 // Buffer 12 + 168 // Buffer 13 + 169 // Buffer 14 + 170 // Buffer 15 + 171 // Buffers 16-31 + 172>; // Buffers 32-63 + }; + + can@fffc4000 { // Controller Area Network (FlexCAN_B) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc4000 0x4000>; + interrupts = <280 // Bus off + 281 // Error + 283 // Buffer 0 + 284 // Buffer 1 + 285 // Buffer 2 + 286 // Buffer 3 + 287 // Buffer 4 + 288 // Buffer 5 + 289 // Buffer 6 + 290 // Buffer 7 + 291 // Buffer 8 + 292 // Buffer 9 + 293 // Buffer 10 + 294 // Buffer 11 + 295 // Buffer 12 + 296 // Buffer 13 + 297 // Buffer 14 + 298 // Buffer 15 + 299 // Buffers 16-31 + 300>; // Buffers 32-63 + }; + + can@fffc8000 { // Controller Area Network (FlexCAN_C) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc8000 0x4000>; + interrupts = <173 // Bus off + 174 // Error + 176 // Buffer 0 + 177 // Buffer 1 + 178 // Buffer 2 + 179 // Buffer 3 + 180 // Buffer 4 + 181 // Buffer 5 + 182 // Buffer 6 + 183 // Buffer 7 + 184 // Buffer 8 + 185 // Buffer 9 + 186 // Buffer 10 + 187 // Buffer 11 + 188 // Buffer 12 + 189 // Buffer 13 + 190 // Buffer 14 + 191 // Buffer 15 + 192 // Buffers 16-31 + 193>; // Buffers 32-63 + }; + + bam@ffffc000 { // Boot Assist Module (BAM) + compatible = "fsl,mpc5554-bam"; + reg = <0xffffc000 0x4000>; + }; + + }; + + }; + +}; ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-22 6:28 ` Németh Márton @ 2010-03-22 14:59 ` Grant Likely 2010-03-23 5:45 ` Németh Márton 0 siblings, 1 reply; 25+ messages in thread From: Grant Likely @ 2010-03-22 14:59 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev Development, David Gibson 2010/3/22 N=E9meth M=E1rton <nm127@freemail.hu>: > Hi Grant, > > thanks for the comments, I solved some of the points you mentioned. I nee= d some > more time to work on the others. In the meantime I send the intermediate = version. > > Grant Likely wrote: >> 2010/3/13 N=E9meth M=E1rton <nm127@freemail.hu>: > [...] >>> + =A0 =A0 =A0 memory@40000000 { >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 device_type =3D "memory"; >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <0x40000000 0x10000>; =A0 =A0 // = 32KiB internal SRAM >>> + =A0 =A0 =A0 }; >> >> Oh.... this is the small SRAM. =A0yeah, you should move this under the >> appropriate bridge node, remove the device_type property, and add a >> compatible property. =A0Memory nodes at the root like this are used to >> describe what is basically main memory (what Linux will execute out >> of). =A0You'll want a new memory node for the external ram hooked up to >> the 5554. > > Yes, it is the small one (actually 64KiB, I corrected the comment also). > I added the external memory of the MPC5554DEMO evaluation board which has > a size of 512KiB. Yikes. Half a meg is tiny for running Linux. > Would it be possible to program the uncompressed kernel to the FLASH so > it can run directly from there? I guess for the code and the constant sec= tions > the FLASH could be a good place. Then cstart has to initialize the initia= lized > variables by copying data from FLASH to RAM and fill the BSS area with ze= ro. Hmmm. I don't know if anyone has kernel execute in place (XIP) working on PowerPC. > > [...] >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 siu@3f89000 { =A0 =A0 =A0= =A0 =A0 // System Integration Unit >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatibl= e =3D "fsl,mpc5554-siu"; >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <= 0x03f90000 0x4000>; >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 interrupt= s =3D <45 1 =A0 =A0 =A0// External Interrupt Overrun 0-15 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 46 1 =A0 =A0 =A0// External Interrupt 0 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 47 1 =A0 =A0 =A0// External Interrupt 1 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 48 1 =A0 =A0 =A0// External Interrupt 2 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 49 1 =A0 =A0 =A0// External Interrupt 3 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 50 1>; =A0 =A0// External Interrupt 4-15 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 }; >> >> This doesn't look quite right.... /me goes to look at the 5554 >> reference manual.... >> >> Okay, so all the external IRQs go through the SIU then, even though >> the first 4 get passed straight through to the intc? =A0And I see that >> all the level/edge sensing and masking/acknowledging is done at the >> SIU level, not the intc level, correct? =A0So, what you effectively have >> is the SIU is *another* interrupt controller that is cascaded to the >> intc. =A0Therefore you need to add the following to this node: >> >> #interrupt-cells =3D <2>; =A0 // cell1:extirq#, cell2:level/edge flags >> interrupt-controller; >> >> Also give the node a label so that nodes for external devices can >> reference it for hooking up external irqs by overriding the top-level >> interrupt-parent property. >> >> Also, it would appear that intc interrupts don't have any level/edge >> configuration associated with them. =A0They are either asserted, or they >> are not, correct? =A0At the moment you're specifying every intc >> interrupt with 2 cells, and the 2nd cell is always '1'. =A0I think you >> can change #interrupt-cells to <1> in the intc node and drop the '1' >> everywhere. >> >> When you write your intc driver, you'll also need to write the >> cascaded driver for the external IRQs. > > I tried to solve this point but I'm not quite sure whether the SIU interr= upt > numbers shall be kept on the siu@3f89000 node or not. Yes, you'll want the irq numbers to remain in the siu node because those are the 'cascade' irqs that the siu raises when the external irqs are asserted. >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 emios@3fa0000 { =A0 =A0 = =A0 =A0 // Modular Timer System >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 compatibl= e =3D "fsl,mpc5554-emios"; >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 reg =3D <= 0x03fa0000 0x4000>; >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 interrupt= s =3D <51 1 =A0 =A0 =A0// Channel 0 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 52 1 =A0 =A0 =A0// Channel 1 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 53 1 =A0 =A0 =A0// Channel 2 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 54 1 =A0 =A0 =A0// Channel 3 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 55 1 =A0 =A0 =A0// Channel 4 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 56 1 =A0 =A0 =A0// Channel 5 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 57 1 =A0 =A0 =A0// Channel 6 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 58 1 =A0 =A0 =A0// Channel 7 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 59 1 =A0 =A0 =A0// Channel 8 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 60 1 =A0 =A0 =A0// Channel 9 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 61 1 =A0 =A0 =A0// Channel 10 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 62 1 =A0 =A0 =A0// Channel 11 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 63 1 =A0 =A0 =A0// Channel 12 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 64 1 =A0 =A0 =A0// Channel 13 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 65 1 =A0 =A0 =A0// Channel 14 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 66 1 =A0 =A0 =A0// Channel 15 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 202 1 =A0 =A0 // Channel 16 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 203 1 =A0 =A0 // Channel 17 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 204 1 =A0 =A0 // Channel 18 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 205 1 =A0 =A0 // Channel 19 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 206 1 =A0 =A0 // Channel 20 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 207 1 =A0 =A0 // Channel 21 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 208 1 =A0 =A0 // Channel 22 >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 209 1>; =A0 // Channel 23 >> >> These long lists bother me, but looking at the manual they seem to >> describe the actual hardware architecture, so I think they are >> probably fine. =A0But you may want to compact your formatting somewhat. >> You can probably list more than one channel per >> source line in the file. >> >> Ditto through the rest of the file. > > I would keep the list like this because in this case it is easy to find > which comment belongs to which interrupt number. Otherwise one would need > to count the interrupt numbers and the comment to find out which number m= atch > which comment. You could do it in this style to keep the verbosity down: interrupts =3D <51 52 53 54 55 56 57 58 // Channels 0-7 59 60 61 62 63 64 65 66 // Channels 8-15 202 203 204 205 206 207 208 209>; // Channel 16-23 --=20 Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-22 14:59 ` Grant Likely @ 2010-03-23 5:45 ` Németh Márton 0 siblings, 0 replies; 25+ messages in thread From: Németh Márton @ 2010-03-23 5:45 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Development, David Gibson Grant Likely wrote: > 2010/3/22 Németh Márton <nm127@freemail.hu>: >> Hi Grant, >> >> thanks for the comments, I solved some of the points you mentioned. I need some >> more time to work on the others. In the meantime I send the intermediate version. >> >> Grant Likely wrote: >>> 2010/3/13 Németh Márton <nm127@freemail.hu>: >> [...] >>>> + memory@40000000 { >>>> + device_type = "memory"; >>>> + reg = <0x40000000 0x10000>; // 32KiB internal SRAM >>>> + }; >>> Oh.... this is the small SRAM. yeah, you should move this under the >>> appropriate bridge node, remove the device_type property, and add a >>> compatible property. Memory nodes at the root like this are used to >>> describe what is basically main memory (what Linux will execute out >>> of). You'll want a new memory node for the external ram hooked up to >>> the 5554. >> Yes, it is the small one (actually 64KiB, I corrected the comment also). >> I added the external memory of the MPC5554DEMO evaluation board which has >> a size of 512KiB. > > Yikes. Half a meg is tiny for running Linux. > >> Would it be possible to program the uncompressed kernel to the FLASH so >> it can run directly from there? I guess for the code and the constant sections >> the FLASH could be a good place. Then cstart has to initialize the initialized >> variables by copying data from FLASH to RAM and fill the BSS area with zero. > > Hmmm. I don't know if anyone has kernel execute in place (XIP) > working on PowerPC. I found some promising links for XIP on PowerPC: - XIP for PowerQUICC™I 8xx: http://www.denx.de/wiki/bin/view/DULG/ConfigureLinuxForXIP - XIP on Arctic III PowerPC board: http://simplemachines.it/xip/KernelXIP.html#head-3d70ff3a6d5599f6f98f1d4b4becc9271310967d >> [...] >>>> + siu@3f89000 { // System Integration Unit >>>> + compatible = "fsl,mpc5554-siu"; >>>> + reg = <0x03f90000 0x4000>; >>>> + interrupts = <45 1 // External Interrupt Overrun 0-15 >>>> + 46 1 // External Interrupt 0 >>>> + 47 1 // External Interrupt 1 >>>> + 48 1 // External Interrupt 2 >>>> + 49 1 // External Interrupt 3 >>>> + 50 1>; // External Interrupt 4-15 >>>> + }; >>> This doesn't look quite right.... /me goes to look at the 5554 >>> reference manual.... >>> >>> Okay, so all the external IRQs go through the SIU then, even though >>> the first 4 get passed straight through to the intc? And I see that >>> all the level/edge sensing and masking/acknowledging is done at the >>> SIU level, not the intc level, correct? So, what you effectively have >>> is the SIU is *another* interrupt controller that is cascaded to the >>> intc. Therefore you need to add the following to this node: >>> >>> #interrupt-cells = <2>; // cell1:extirq#, cell2:level/edge flags >>> interrupt-controller; >>> >>> Also give the node a label so that nodes for external devices can >>> reference it for hooking up external irqs by overriding the top-level >>> interrupt-parent property. >>> >>> Also, it would appear that intc interrupts don't have any level/edge >>> configuration associated with them. They are either asserted, or they >>> are not, correct? At the moment you're specifying every intc >>> interrupt with 2 cells, and the 2nd cell is always '1'. I think you >>> can change #interrupt-cells to <1> in the intc node and drop the '1' >>> everywhere. >>> >>> When you write your intc driver, you'll also need to write the >>> cascaded driver for the external IRQs. >> I tried to solve this point but I'm not quite sure whether the SIU interrupt >> numbers shall be kept on the siu@3f89000 node or not. > > Yes, you'll want the irq numbers to remain in the siu node because > those are the 'cascade' irqs that the siu raises when the external > irqs are asserted. > >>>> + emios@3fa0000 { // Modular Timer System >>>> + compatible = "fsl,mpc5554-emios"; >>>> + reg = <0x03fa0000 0x4000>; >>>> + interrupts = <51 1 // Channel 0 >>>> + 52 1 // Channel 1 >>>> + 53 1 // Channel 2 >>>> + 54 1 // Channel 3 >>>> + 55 1 // Channel 4 >>>> + 56 1 // Channel 5 >>>> + 57 1 // Channel 6 >>>> + 58 1 // Channel 7 >>>> + 59 1 // Channel 8 >>>> + 60 1 // Channel 9 >>>> + 61 1 // Channel 10 >>>> + 62 1 // Channel 11 >>>> + 63 1 // Channel 12 >>>> + 64 1 // Channel 13 >>>> + 65 1 // Channel 14 >>>> + 66 1 // Channel 15 >>>> + 202 1 // Channel 16 >>>> + 203 1 // Channel 17 >>>> + 204 1 // Channel 18 >>>> + 205 1 // Channel 19 >>>> + 206 1 // Channel 20 >>>> + 207 1 // Channel 21 >>>> + 208 1 // Channel 22 >>>> + 209 1>; // Channel 23 >>> These long lists bother me, but looking at the manual they seem to >>> describe the actual hardware architecture, so I think they are >>> probably fine. But you may want to compact your formatting somewhat. >>> You can probably list more than one channel per >>> source line in the file. >>> >>> Ditto through the rest of the file. >> I would keep the list like this because in this case it is easy to find >> which comment belongs to which interrupt number. Otherwise one would need >> to count the interrupt numbers and the comment to find out which number match >> which comment. > > You could do it in this style to keep the verbosity down: > > interrupts = <51 52 53 54 55 56 57 58 // Channels 0-7 > 59 60 61 62 63 64 65 66 // Channels 8-15 > 202 203 204 205 206 207 208 209>; // Channel 16-23 > I compacted the different channel interrupt lists as you proposed. The eTPU related nodes still needs improvement. Regards, Márton Németh --- From: Márton Németh <nm127@freemail.hu> Add device tree for Freescale MPC5554. Signed-off-by: Márton Németh <nm127@freemail.hu> --- diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts linux-2.6.33/arch/powerpc/boot/dts/mpc5554.dts --- linux-2.6.33.orig/arch/powerpc/boot/dts/mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.33/arch/powerpc/boot/dts/mpc5554.dts 2010-03-23 06:39:37.000000000 +0100 @@ -0,0 +1,313 @@ +/* + * Freescale MPC5554 Device Tree Source + * + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf + * - Block Diagram: page 1-3, Figure 1-1 + * - Memory Map: page 1-21, Table 1-2 + * - Interrupt Request Sources: page 10-16, Table 10-9 + * + * This device tree also contains external components found on MPC5554DEMO + * http://www.axman.com/files/MPC5554DEMO_man_G.pdf + * http://www.axman.com/files/MPC5554DEMO_SCH_G.pdf + * + * Copyright 2010 Márton Németh + * Márton Németh <nm127@freemail.hu> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC5554"; + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&intc>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "PowerPC,5554", "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; + reg = <0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <0x8000>; // L1, 32KiB + i-cache-size = <0x8000>; // L1, 32KiB + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory@20000000 { + device_type = "memory"; + reg = <0x20000000 0x80000>; // 512KiB external SRAM: ISSI IS61SF12832 + // CS0 or CS1 selectable by the SRAM_SEL jumper + }; + + xbar@fff04000 { // System Bus Crossbar Switch (XBAR) + compatible = "fsl,mpc5554-xbar"; + #address-cells = <1>; + #size-cells = <1>; + // The full memory range is covered by XBAR + ranges; + reg = <0xfff04000 0x4000>; + + flash@0 { // read-only FLASH + compatible = "fsl,mpc5554-flash"; + reg = <0x00000000 0x200000>; // 2MiB internal FLASH + }; + + memory@40000000 { + compatible = "fsl,mpc5554-sram"; + reg = <0x40000000 0x10000>; // 64KiB internal SRAM + }; + + bridge@c3f00000 { + compatible = "fsl,mpc5554-pbridge-a"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xc0000000 0x20000000>; + reg = <0xc3f00000 0x4000>; + + fmpll@3f80000 { // Frequency Modulated PLL + compatible = "fsl,mpc5554-fmpll"; + reg = <0x03f80000 0x4000>; + interrupts = <43 // Loss of Clock + 44>; // Loss of Lock + }; + + flashconfig@3f88000 { // Flash Configuration + compatible = "fsl,mpc5554-flashconfig"; + reg = <0x03f88000 0x4000>; + }; + + siuintc: siu@3f89000 { // System Integration Unit + compatible = "fsl,mpc5554-siu"; + reg = <0x03f90000 0x4000>; + + // SIU is an interrupt controller by means that it handles + // the external interrupts + #interrupt-cells = <2>; // cell 1: extirq#, cell 2: level/edge flags + interrupt-controller; + interrupts = <45 1 // External Interrupt Overrun 0-15 + 46 1 // External Interrupt 0 + 47 1 // External Interrupt 1 + 48 1 // External Interrupt 2 + 49 1 // External Interrupt 3 + 50 1>; // External Interrupt 4-15 + }; + + emios@3fa0000 { // Modular Timer System + compatible = "fsl,mpc5554-emios"; + reg = <0x03fa0000 0x4000>; + interrupts = < 51 52 53 54 55 56 57 58 // Channels 0-7 + 59 60 61 62 63 64 65 66 // Channels 8-15 + 202 203 204 205 206 207 208 209>; // Channel 16-23 + }; + + etpu@3fc0000 { // Enhanced Time Processing Unit + compatible = "fsl,mpc5554-etpu"; + reg = <0x03fc0000 0x4000>; + interrupts = <67 // Global Exception + 68 69 70 71 72 73 74 75 // A Channels 0-7 + 76 77 78 79 80 81 82 83 // A Channels 8-15 + 84 85 86 87 88 89 90 91 // A Channels 16-23 + 92 93 94 95 96 97 98 99 // A Channels 24-31 + 243 244 245 256 247 248 249 250 // B Channels 0-7 + 251 252 253 254 255 256 257 248 // B Channels 8-15 + 259 260 261 262 263 264 265 266 // B Channels 16-23 + 267 268 269 270 271 272 273 274>; // B Channels 24-31 + }; + + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fc8000 0x4000>; + }; + + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fcc000 0x4000>; + }; + + etpucode@3fd0000 { // eTPU Shared Code RAM + compatible = "fsl,mpc5554-etpucode"; + reg = <0x03fd0000 0x4000>; + }; + }; + + bridge@fff00000 { + compatible = "fsl,mpc5554-pbridge-b"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xe0000000 0x20000000>; + reg = <0xfff00000 0x4000>; + + ecsm@fff40000 { // Error Correction Status Module (ECSM) + compatible = "fsl,mpc5554-ecsm"; + reg = <0xfff40000 0x4000>; + interrupts = <8 // Software Watchdog Interrupt + 9>; // Combined: Internal SRAM Non-Correctable Error, Flash Non-Correctable Error + }; + + edma@fff44000 { // Enhanced DMA Controller (eDMA) + compatible = "fsl,mpc5554-edma"; + reg = <0xfff44000 0x4000>; + interrupts = <10 // Channel Error 0-31 + 11 12 13 14 15 16 17 18 // Channels 0-7 + 19 20 21 22 23 24 25 26 // Channels 8-15 + 27 28 29 30 31 32 33 34 // Channels 16-23 + 35 36 37 38 39 40 41 42 // Channels 24-31 + 210 // Channel Error 32-63 + 211 212 213 214 215 216 217 218 // Channels 32-39 + 219 220 221 222 223 224 225 226 // Channels 40-47 + 227 228 229 230 231 232 233 234 // Channels 48-55 + 235 236 237 238 239 240 241 242>; // Channels 56-63 + }; + + intc: intc@fff48000 { // Interrupt Controller (INTC) + compatible = "fsl,mpc5554-intc"; + interrupt-controller; + #interrupt-cells = <1>; + reg = <0xfff48000 0x4000>; + }; + + eqadc@fff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) + compatible = "fsl,mpc5554-eqacd"; + reg = <0xfff80000 0x4000>; + interrupts = <100 // Combined: Trigger Overrun, Receive FIFO Overflow, Command FIFO Underflow + 101 // Command FIFO 0 Non-Coherency + 102 // Command FIFO 0 Pause + 103 // Command FIFO 0 End of Queue + 104 // Command FIFO 0 Fill + 105 // Command FIFO 0 Drain + 106 // Command FIFO 1 Non-Coherency + 107 // Command FIFO 1 Pause + 108 // Command FIFO 1 End of Queue + 109 // Command FIFO 1 Fill + 111 // Command FIFO 1 Drain + 111 // Command FIFO 2 Non-Coherency + 112 // Command FIFO 2 Pause + 113 // Command FIFO 2 End of Queue + 114 // Command FIFO 2 Fill + 115 // Command FIFO 2 Drain + 116 // Command FIFO 3 Non-Coherency + 117 // Command FIFO 3 Pause + 118 // Command FIFO 3 End of Queue + 119 // Command FIFO 3 Fill + 120 // Command FIFO 3 Drain + 121 // Command FIFO 4 Non-Coherency + 122 // Command FIFO 4 Pause + 123 // Command FIFO 4 End of Queue + 124 // Command FIFO 4 Fill + 125 // Command FIFO 4 Drain + 126 // Command FIFO 5 Non-Coherency + 127 // Command FIFO 5 Pause + 128 // Command FIFO 5 End of Queue + 129 // Command FIFO 5 Fill + 130>; // Command FIFO 5 Drain + }; + + dspi@fff90000 { // Deserial Serial Peripheral Interface (DSPI_A) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff90000 0x4000>; + interrupts = <275 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 276 // Transmit FIFO End of Queue + 277 // Transmit FIFO Fill Flag + 278 // Transfer Complete + 279>; // Receive FIFO Drain + }; + + dspi@fff94000 { // Deserial Serial Peripheral Interface (DSPI_B) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff94000 0x4000>; + interrupts = <131 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 132 // Transmit FIFO End of Queue + 133 // Transmit FIFO Fill Flag + 134 // Transfer Complete + 135>; // Receive FIFO Drain + }; + + dspi@fff98000 { // Deserial Serial Peripheral Interface (DSPI_C) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff98000 0x4000>; + interrupts = <136 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 137 // Transmit FIFO End of Queue + 138 // Transmit FIFO Fill Flag + 139 // Transfer Complete + 140>; // Receive FIFO Drain + }; + + dspi@fff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff9c000 0x4000>; + interrupts = <141 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 142 // Transmit FIFO End of Queue + 143 // Transmit FIFO Fill Flag + 144 // Transfer Complete + 145>; // Receive FIFO Drain + }; + + esci@fffb0000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb0000 0x4000>; + interrupts = <146>; // Combined request for all SCI_A interrupts + }; + + esci@fffb4000 { // Serial Communications Interface (SCI_B) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb4000 0x4000>; + interrupts = <149>; // Combined request for all SCI_A interrupts + }; + + can@fffc0000 { // Controller Area Network (FlexCAN_A) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc0000 0x4000>; + interrupts = <152 // Bus off + 153 // Error + 155 156 157 158 159 160 161 162 // Buffers 0-7 + 163 164 165 166 167 168 169 170 // Buffers 8-15 + 171 // Buffers 16-31 + 172>; // Buffers 32-63 + }; + + can@fffc4000 { // Controller Area Network (FlexCAN_B) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc4000 0x4000>; + interrupts = <280 // Bus off + 281 // Error + 283 284 285 186 287 288 289 290 // Buffers 0-7 + 291 292 293 294 295 296 297 298 // Buffers 8-15 + 299 // Buffers 16-31 + 300>; // Buffers 32-63 + }; + + can@fffc8000 { // Controller Area Network (FlexCAN_C) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc8000 0x4000>; + interrupts = <173 // Bus off + 174 // Error + 176 177 178 179 180 181 182 183 // Buffers 0-7 + 184 185 186 187 188 189 190 191 // Buffers 8-15 + 192 // Buffers 16-31 + 193>; // Buffers 32-63 + }; + + bam@ffffc000 { // Boot Assist Module (BAM) + compatible = "fsl,mpc5554-bam"; + reg = <0xffffc000 0x4000>; + }; + + }; + + }; + +}; ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) 2010-03-17 19:02 ` Grant Likely 2010-03-22 6:28 ` Németh Márton @ 2010-03-30 6:54 ` Németh Márton 1 sibling, 0 replies; 25+ messages in thread From: Németh Márton @ 2010-03-30 6:54 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Development, David Gibson Hi, Grant Likely wrote: > 2010/3/13 Németh Márton <nm127@freemail.hu>: [...] >> + }; >> + >> + etpu@3fc0000 { // Enhanced Time Processing Unit >> + compatible = "fsl,mpc5554-etpu"; >> + reg = <0x03fc0000 0x4000>; >> + interrupts = <67 1 // Global Exception >> + 68 1 // A Channel 0 >> + 69 1 // A Channel 1 >> + 70 1 // A Channel 2 >> + 71 1 // A Channel 3 >> + 72 1 // A Channel 4 >> + 73 1 // A Channel 5 >> + 74 1 // A Channel 6 >> + 75 1 // A Channel 7 >> + 76 1 // A Channel 8 >> + 77 1 // A Channel 9 >> + 78 1 // A Channel 10 >> + 79 1 // A Channel 11 >> + 80 1 // A Channel 12 >> + 81 1 // A Channel 13 >> + 82 1 // A Channel 14 >> + 83 1 // A Channel 15 >> + 84 1 // A Channel 16 >> + 85 1 // A Channel 17 >> + 86 1 // A Channel 18 >> + 87 1 // A Channel 19 >> + 88 1 // A Channel 20 >> + 89 1 // A Channel 21 >> + 90 1 // A Channel 22 >> + 91 1 // A Channel 23 >> + 92 1 // A Channel 24 >> + 93 1 // A Channel 25 >> + 94 1 // A Channel 26 >> + 95 1 // A Channel 27 >> + 96 1 // A Channel 28 >> + 97 1 // A Channel 29 >> + 98 1 // A Channel 30 >> + 99 1 // A Channel 31 >> + 243 1 // B Channel 0 >> + 244 1 // B Channel 1 >> + 245 1 // B Channel 2 >> + 246 1 // B Channel 3 >> + 247 1 // B Channel 4 >> + 248 1 // B Channel 5 >> + 249 1 // B Channel 6 >> + 250 1 // B Channel 7 >> + 251 1 // B Channel 8 >> + 252 1 // B Channel 9 >> + 253 1 // B Channel 10 >> + 254 1 // B Channel 11 >> + 255 1 // B Channel 12 >> + 256 1 // B Channel 13 >> + 257 1 // B Channel 14 >> + 258 1 // B Channel 15 >> + 259 1 // B Channel 16 >> + 260 1 // B Channel 17 >> + 261 1 // B Channel 18 >> + 262 1 // B Channel 19 >> + 263 1 // B Channel 20 >> + 264 1 // B Channel 21 >> + 265 1 // B Channel 22 >> + 266 1 // B Channel 23 >> + 267 1 // B Channel 24 >> + 268 1 // B Channel 25 >> + 269 1 // B Channel 26 >> + 270 1 // B Channel 27 >> + 271 1 // B Channel 28 >> + 272 1 // B Channel 29 >> + 273 1 // B Channel 30 >> + 274 1>; // B Channel 31 > > Are A and B two instances of the same hardware block? Consider having > a subnode for each instance to give some logical separation to this > list and associate register ranges with instances. Doing it that way > also makes it easier for external device nodes to describe an > attachment to a particular channel. > >> + }; >> + >> + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) >> + compatible = "fsl,mpc5554-etpudata"; >> + reg = <0x03fc8000 0x4000>; >> + }; >> + >> + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror >> + compatible = "fsl,mpc5554-etpudata"; >> + reg = <0x03fcc000 0x4000>; >> + }; >> + >> + etpucode@3fd0000 { // eTPU Shared Code RAM >> + compatible = "fsl,mpc5554-etpucode"; >> + reg = <0x03fd0000 0x4000>; >> + }; > > Should all this etpu stuff be part of the etpu node? With this version of MPC5554 device tree I try to improve the eTPU related node. The Table 18-6 on page 18-15 in the http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf shows the detailed memory map of the eTPU. What is visible is that the eTPU A and eTPU B is interleaved in the memory map. For example ETPU_ECR_A is at Base + 0x0_0014 while ETPU_ECR_B is at Base + 0x0_0018. Then comes a register set for time base configuration: ETPU_TBCR_A is at Base + 0x0_0020, and ETPU_TBCR_B is at Base + 0x0_0040. As you can see the eTPU A and eTPU B registers are not just shifted by a fixed offset but comes interleaved according to the hardware designer wish. How can the multiple register ranges be expressed in device tree? Regards, Márton Németh --- From: Márton Németh <nm127@freemail.hu> Add device tree for Freescale MPC5554. Signed-off-by: Márton Németh <nm127@freemail.hu> --- diff -uprN linux-2.6.33.orig/arch/powerpc/boot/dts//mpc5554.dts linux-2.6.33/arch/powerpc/boot/dts/mpc5554.dts --- linux-2.6.33.orig/arch/powerpc/boot/dts//mpc5554.dts 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.6.33/arch/powerpc/boot/dts/mpc5554.dts 2010-03-30 08:17:06.000000000 +0200 @@ -0,0 +1,321 @@ +/* + * Freescale MPC5554 Device Tree Source + * + * Based on MPC5553/5554 Microcontroller Reference Manual, Rev. 4.0, 04/2007 + * http://www.freescale.com/files/32bit/doc/ref_manual/MPC5553_MPC5554_RM.pdf + * - Block Diagram: page 1-3, Figure 1-1 + * - Memory Map: page 1-21, Table 1-2 + * - Interrupt Request Sources: page 10-16, Table 10-9 + * + * This device tree also contains external components found on MPC5554DEMO + * http://www.axman.com/files/MPC5554DEMO_man_G.pdf + * http://www.axman.com/files/MPC5554DEMO_SCH_G.pdf + * + * Copyright 2010 Márton Németh + * Márton Németh <nm127@freemail.hu> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC5554"; + compatible = "fsl,MPC5554EVB"; // Freescale MPC5554 Evaluation Board + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&intc>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "PowerPC,5554", "fsl,mpc5554-e200z6", "fsl,powerpc-e200z6"; + reg = <0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <0x8000>; // L1, 32KiB + i-cache-size = <0x8000>; // L1, 32KiB + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory@20000000 { + device_type = "memory"; + reg = <0x20000000 0x80000>; // 512KiB external SRAM: ISSI IS61SF12832 + // CS0 or CS1 selectable by the SRAM_SEL jumper + }; + + xbar@fff04000 { // System Bus Crossbar Switch (XBAR) + compatible = "fsl,mpc5554-xbar"; + #address-cells = <1>; + #size-cells = <1>; + // The full memory range is covered by XBAR + ranges; + reg = <0xfff04000 0x4000>; + + flash@0 { // read-only FLASH + compatible = "fsl,mpc5554-flash"; + reg = <0x00000000 0x200000>; // 2MiB internal FLASH + }; + + memory@40000000 { + compatible = "fsl,mpc5554-sram"; + reg = <0x40000000 0x10000>; // 64KiB internal SRAM + }; + + bridge@c3f00000 { + compatible = "fsl,mpc5554-pbridge-a"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xc0000000 0x20000000>; + reg = <0xc3f00000 0x4000>; + + fmpll@3f80000 { // Frequency Modulated PLL + compatible = "fsl,mpc5554-fmpll"; + reg = <0x03f80000 0x4000>; + interrupts = <43 // Loss of Clock + 44>; // Loss of Lock + }; + + flashconfig@3f88000 { // Flash Configuration + compatible = "fsl,mpc5554-flashconfig"; + reg = <0x03f88000 0x4000>; + }; + + siuintc: siu@3f89000 { // System Integration Unit + compatible = "fsl,mpc5554-siu"; + reg = <0x03f90000 0x4000>; + + // SIU is an interrupt controller by means that it handles + // the external interrupts + #interrupt-cells = <2>; // cell 1: extirq#, cell 2: level/edge flags + interrupt-controller; + interrupts = <45 1 // External Interrupt Overrun 0-15 + 46 1 // External Interrupt 0 + 47 1 // External Interrupt 1 + 48 1 // External Interrupt 2 + 49 1 // External Interrupt 3 + 50 1>; // External Interrupt 4-15 + }; + + emios@3fa0000 { // Modular Timer System + compatible = "fsl,mpc5554-emios"; + reg = <0x03fa0000 0x4000>; + interrupts = < 51 52 53 54 55 56 57 58 // Channels 0-7 + 59 60 61 62 63 64 65 66 // Channels 8-15 + 202 203 204 205 206 207 208 209>; // Channel 16-23 + }; + + etpu@3fc0000 { // Enhanced Time Processing Unit + compatible = "fsl,mpc5554-etpu"; + reg = <0x03fc0000 0x4000>; + interrupts = <67>; // Global Exception + + etpuengine@3fc0014 { // eTPU Engine A + compatible = "fsl,mpc5554-etpuengine"; + interrupts = <68 69 70 71 72 73 74 75 // A Channels 0-7 + 76 77 78 79 80 81 82 83 // A Channels 8-15 + 84 85 86 87 88 89 90 91 // A Channels 16-23 + 92 93 94 95 96 97 98 99 // A Channels 24-31 + }; + + etpuengine@3fc0018 { // eTPU Engine B + compatible = "fsl,mpc5554-etpuengine"; + interrupts = <243 244 245 256 247 248 249 250 // B Channels 0-7 + 251 252 253 254 255 256 257 248 // B Channels 8-15 + 259 260 261 262 263 264 265 266 // B Channels 16-23 + 267 268 269 270 271 272 273 274>; // B Channels 24-31 + }; + + etpudata@3fc8000 { // eTPU Shared Data Memory (Parameter RAM) + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fc8000 0x4000>; // 3 KiB + }; + + etpudata@3fcc000 { // eTPU Shared Data Memory (Parameter RAM) mirror + compatible = "fsl,mpc5554-etpudata"; + reg = <0x03fcc000 0x4000>; // 3 KiB + }; + + etpucode@3fd0000 { // eTPU Shared Code RAM + compatible = "fsl,mpc5554-etpucode"; + reg = <0x03fd0000 0x4000>; // 16 KiB + }; + }; + }; + + bridge@fff00000 { + compatible = "fsl,mpc5554-pbridge-b"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0xe0000000 0x20000000>; + reg = <0xfff00000 0x4000>; + + ecsm@fff40000 { // Error Correction Status Module (ECSM) + compatible = "fsl,mpc5554-ecsm"; + reg = <0xfff40000 0x4000>; + interrupts = <8 // Software Watchdog Interrupt + 9>; // Combined: Internal SRAM Non-Correctable Error, Flash Non-Correctable Error + }; + + edma@fff44000 { // Enhanced DMA Controller (eDMA) + compatible = "fsl,mpc5554-edma"; + reg = <0xfff44000 0x4000>; + interrupts = <10 // Channel Error 0-31 + 11 12 13 14 15 16 17 18 // Channels 0-7 + 19 20 21 22 23 24 25 26 // Channels 8-15 + 27 28 29 30 31 32 33 34 // Channels 16-23 + 35 36 37 38 39 40 41 42 // Channels 24-31 + 210 // Channel Error 32-63 + 211 212 213 214 215 216 217 218 // Channels 32-39 + 219 220 221 222 223 224 225 226 // Channels 40-47 + 227 228 229 230 231 232 233 234 // Channels 48-55 + 235 236 237 238 239 240 241 242>; // Channels 56-63 + }; + + intc: intc@fff48000 { // Interrupt Controller (INTC) + compatible = "fsl,mpc5554-intc"; + interrupt-controller; + #interrupt-cells = <1>; + reg = <0xfff48000 0x4000>; + }; + + eqadc@fff80000 { // Enhanced Queued Analog-to-Digital Converter (eQADC) + compatible = "fsl,mpc5554-eqacd"; + reg = <0xfff80000 0x4000>; + interrupts = <100 // Combined: Trigger Overrun, Receive FIFO Overflow, Command FIFO Underflow + 101 // Command FIFO 0 Non-Coherency + 102 // Command FIFO 0 Pause + 103 // Command FIFO 0 End of Queue + 104 // Command FIFO 0 Fill + 105 // Command FIFO 0 Drain + 106 // Command FIFO 1 Non-Coherency + 107 // Command FIFO 1 Pause + 108 // Command FIFO 1 End of Queue + 109 // Command FIFO 1 Fill + 111 // Command FIFO 1 Drain + 111 // Command FIFO 2 Non-Coherency + 112 // Command FIFO 2 Pause + 113 // Command FIFO 2 End of Queue + 114 // Command FIFO 2 Fill + 115 // Command FIFO 2 Drain + 116 // Command FIFO 3 Non-Coherency + 117 // Command FIFO 3 Pause + 118 // Command FIFO 3 End of Queue + 119 // Command FIFO 3 Fill + 120 // Command FIFO 3 Drain + 121 // Command FIFO 4 Non-Coherency + 122 // Command FIFO 4 Pause + 123 // Command FIFO 4 End of Queue + 124 // Command FIFO 4 Fill + 125 // Command FIFO 4 Drain + 126 // Command FIFO 5 Non-Coherency + 127 // Command FIFO 5 Pause + 128 // Command FIFO 5 End of Queue + 129 // Command FIFO 5 Fill + 130>; // Command FIFO 5 Drain + }; + + dspi@fff90000 { // Deserial Serial Peripheral Interface (DSPI_A) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff90000 0x4000>; + interrupts = <275 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 276 // Transmit FIFO End of Queue + 277 // Transmit FIFO Fill Flag + 278 // Transfer Complete + 279>; // Receive FIFO Drain + }; + + dspi@fff94000 { // Deserial Serial Peripheral Interface (DSPI_B) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff94000 0x4000>; + interrupts = <131 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 132 // Transmit FIFO End of Queue + 133 // Transmit FIFO Fill Flag + 134 // Transfer Complete + 135>; // Receive FIFO Drain + }; + + dspi@fff98000 { // Deserial Serial Peripheral Interface (DSPI_C) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff98000 0x4000>; + interrupts = <136 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 137 // Transmit FIFO End of Queue + 138 // Transmit FIFO Fill Flag + 139 // Transfer Complete + 140>; // Receive FIFO Drain + }; + + dspi@fff9c000 { // Deserial Serial Peripheral Interface (DSPI_D) + compatible = "fsl,mpc5554-dspi"; + reg = <0xfff9c000 0x4000>; + interrupts = <141 // Combined: Transmit FIFO Underflow, Receive FIFO Overflow + 142 // Transmit FIFO End of Queue + 143 // Transmit FIFO Fill Flag + 144 // Transfer Complete + 145>; // Receive FIFO Drain + }; + + esci@fffb0000 { // Serial Communications Interface (SCI_A) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb0000 0x4000>; + interrupts = <146>; // Combined request for all SCI_A interrupts + }; + + esci@fffb4000 { // Serial Communications Interface (SCI_B) + compatible = "fsl,mpc5554-esci"; + reg = <0xfffb4000 0x4000>; + interrupts = <149>; // Combined request for all SCI_A interrupts + }; + + can@fffc0000 { // Controller Area Network (FlexCAN_A) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc0000 0x4000>; + interrupts = <152 // Bus off + 153 // Error + 155 156 157 158 159 160 161 162 // Buffers 0-7 + 163 164 165 166 167 168 169 170 // Buffers 8-15 + 171 // Buffers 16-31 + 172>; // Buffers 32-63 + }; + + can@fffc4000 { // Controller Area Network (FlexCAN_B) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc4000 0x4000>; + interrupts = <280 // Bus off + 281 // Error + 283 284 285 186 287 288 289 290 // Buffers 0-7 + 291 292 293 294 295 296 297 298 // Buffers 8-15 + 299 // Buffers 16-31 + 300>; // Buffers 32-63 + }; + + can@fffc8000 { // Controller Area Network (FlexCAN_C) + compatible = "fsl,mpc5554-flexcan"; + reg = <0xfffc8000 0x4000>; + interrupts = <173 // Bus off + 174 // Error + 176 177 178 179 180 181 182 183 // Buffers 0-7 + 184 185 186 187 188 189 190 191 // Buffers 8-15 + 192 // Buffers 16-31 + 193>; // Buffers 32-63 + }; + + bam@ffffc000 { // Boot Assist Module (BAM) + compatible = "fsl,mpc5554-bam"; + reg = <0xffffc000 0x4000>; + }; + + }; + + }; + +}; ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-07 6:50 cross-compiling Linux for PowerPC e200 core? Németh Márton 2010-03-08 17:34 ` Grant Likely @ 2010-03-08 17:47 ` Segher Boessenkool 2010-03-08 18:49 ` Németh Márton 1 sibling, 1 reply; 25+ messages in thread From: Segher Boessenkool @ 2010-03-08 17:47 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev Development > Assembler messages: > Error: invalid switch -me200 > Error: unrecognized option -me200 No version of mainline binutils supports this. This kernel code was added in 2005, in 33d9e9b, by FSL; perhaps they have a fork of binutils that supports it, maybe they forgot to submit the changes upstream? Segher ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-08 17:47 ` cross-compiling Linux for PowerPC e200 core? Segher Boessenkool @ 2010-03-08 18:49 ` Németh Márton 2010-03-08 20:41 ` Segher Boessenkool [not found] ` <53452.84.105.60.153.1268080871.squirrel__48847.2990495667$1268080944$gmane$org@gate.crashing.org> 0 siblings, 2 replies; 25+ messages in thread From: Németh Márton @ 2010-03-08 18:49 UTC (permalink / raw) To: Segher Boessenkool; +Cc: linuxppc-dev Development Hi, Segher Boessenkool wrote: >> Assembler messages: >> Error: invalid switch -me200 >> Error: unrecognized option -me200 > > No version of mainline binutils supports this. > > This kernel code was added in 2005, in 33d9e9b, by FSL; perhaps > they have a fork of binutils that supports it, maybe they forgot > to submit the changes upstream? I'm a bit new on the topic, could you please describe what FSL means? I'm also having problems finding the commit 33d9e9b in the git repository at http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git . Regards, Márton Németh ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: cross-compiling Linux for PowerPC e200 core? 2010-03-08 18:49 ` Németh Márton @ 2010-03-08 20:41 ` Segher Boessenkool [not found] ` <53452.84.105.60.153.1268080871.squirrel__48847.2990495667$1268080944$gmane$org@gate.crashing.org> 1 sibling, 0 replies; 25+ messages in thread From: Segher Boessenkool @ 2010-03-08 20:41 UTC (permalink / raw) To: Németh Márton; +Cc: linuxppc-dev Development >>> Assembler messages: >>> Error: invalid switch -me200 >>> Error: unrecognized option -me200 >> >> No version of mainline binutils supports this. >> >> This kernel code was added in 2005, in 33d9e9b, by FSL; perhaps >> they have a fork of binutils that supports it, maybe they forgot >> to submit the changes upstream? > > I'm a bit new on the topic, could you please describe what FSL means? Freescale > I'm also having problems finding the commit 33d9e9b in the git repository > at http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git . http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=33d9e9b There is no obvious way to get there via clicking afaics, the "commit" search box doesn't work at least. Hrm. Segher ^ permalink raw reply [flat|nested] 25+ messages in thread
[parent not found: <53452.84.105.60.153.1268080871.squirrel__48847.2990495667$1268080944$gmane$org@gate.crashing.org>]
* Re: cross-compiling Linux for PowerPC e200 core? [not found] ` <53452.84.105.60.153.1268080871.squirrel__48847.2990495667$1268080944$gmane$org@gate.crashing.org> @ 2010-03-09 14:24 ` Detlev Zundel 0 siblings, 0 replies; 25+ messages in thread From: Detlev Zundel @ 2010-03-09 14:24 UTC (permalink / raw) To: linuxppc-dev Hi Segher, > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=33d9e9b > > There is no obvious way to get there via clicking afaics, the "commit" > search box doesn't work at least. Hrm. It works, but not like one would expect, i.e. check out the help: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=search_help Last I checked the gitweb code, there was no easy way other than what you did by manipulating the URL directly. Cheers Detlev -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu@denx.de ^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2010-03-30 6:54 UTC | newest] Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-03-07 6:50 cross-compiling Linux for PowerPC e200 core? Németh Márton 2010-03-08 17:34 ` Grant Likely 2010-03-08 18:44 ` Németh Márton 2010-03-08 19:08 ` Grant Likely 2010-03-09 7:02 ` Németh Márton 2010-03-09 7:35 ` Grant Likely 2010-03-11 6:11 ` Freescale MPC5554 device tree (was: cross-compiling Linux for PowerPC e200 core?) Németh Márton 2010-03-11 6:23 ` David Gibson 2010-03-12 6:26 ` Németh Márton 2010-03-12 12:14 ` Grant Likely 2010-03-12 22:36 ` David Gibson 2010-03-12 23:04 ` Grant Likely 2010-03-13 3:22 ` Segher Boessenkool 2010-03-13 3:21 ` Segher Boessenkool 2010-03-13 11:59 ` Németh Márton 2010-03-17 18:12 ` Németh Márton 2010-03-17 19:02 ` Grant Likely 2010-03-22 6:28 ` Németh Márton 2010-03-22 14:59 ` Grant Likely 2010-03-23 5:45 ` Németh Márton 2010-03-30 6:54 ` Németh Márton 2010-03-08 17:47 ` cross-compiling Linux for PowerPC e200 core? Segher Boessenkool 2010-03-08 18:49 ` Németh Márton 2010-03-08 20:41 ` Segher Boessenkool [not found] ` <53452.84.105.60.153.1268080871.squirrel__48847.2990495667$1268080944$gmane$org@gate.crashing.org> 2010-03-09 14:24 ` Detlev Zundel
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.