diff options
Diffstat (limited to 'arch/powerpc/boot')
151 files changed, 5615 insertions, 729 deletions
diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore index 554734ff302..d61c0352577 100644 --- a/arch/powerpc/boot/.gitignore +++ b/arch/powerpc/boot/.gitignore @@ -16,6 +16,7 @@ mktree  uImage  cuImage.*  dtbImage.* +*.dtb  treeImage.*  zImage  zImage.initrd diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 15ca2255f43..ccc25eddbcb 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -23,6 +23,13 @@ BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \  		 -fno-strict-aliasing -Os -msoft-float -pipe \  		 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \  		 -isystem $(shell $(CROSS32CC) -print-file-name=include) +ifdef CONFIG_PPC64_BOOT_WRAPPER +BOOTCFLAGS	+= -m64 +endif +ifdef CONFIG_CPU_BIG_ENDIAN +BOOTCFLAGS	+= -mbig-endian +endif +  BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc  ifdef CONFIG_DEBUG_INFO @@ -46,6 +53,7 @@ $(obj)/cuboot-acadia.o: BOOTCFLAGS += -mcpu=405  $(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405  $(obj)/treeboot-iss4xx.o: BOOTCFLAGS += -mcpu=405  $(obj)/treeboot-currituck.o: BOOTCFLAGS += -mcpu=405 +$(obj)/treeboot-akebono.o: BOOTCFLAGS += -mcpu=405  $(obj)/virtex405-head.o: BOOTAFLAGS += -mcpu=405 @@ -53,7 +61,7 @@ zlib       := inffast.c inflate.c inftrees.c  zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h  zliblinuxheader := zlib.h zconf.h zutil.h -$(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o prpmc2800.o): \ +$(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o): \  	$(addprefix $(obj)/,$(zliblinuxheader)) $(addprefix $(obj)/,$(zlibheader))  libfdt       := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c @@ -70,9 +78,9 @@ src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \  		uartlite.c mpc52xx-psc.c  src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c  src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c -src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c +src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c  src-wlib-$(CONFIG_PPC_82xx) += pq2.c fsl-soc.c planetcore.c -src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c +src-wlib-$(CONFIG_EMBEDDED6xx) += mv64x60.c mv64x60_i2c.c ugecon.c fsl-soc.c  src-plat-y := of.c epapr.c  src-plat-$(CONFIG_40x) += fixed-head.S ep405.c cuboot-hotfoot.c \ @@ -85,6 +93,7 @@ src-plat-$(CONFIG_44x) += treeboot-ebony.c cuboot-ebony.c treeboot-bamboo.c \  				cuboot-taishan.c cuboot-katmai.c \  				cuboot-warp.c cuboot-yosemite.c \  				treeboot-iss4xx.c treeboot-currituck.c \ +				treeboot-akebono.c \  				simpleboot.c fixed-head.S virtex.c  src-plat-$(CONFIG_8xx) += cuboot-8xx.c fixed-head.S ep88xc.c redboot-8xx.c  src-plat-$(CONFIG_PPC_MPC52xx) += cuboot-52xx.c @@ -94,10 +103,15 @@ src-plat-$(CONFIG_FSL_SOC_BOOKE) += cuboot-85xx.c cuboot-85xx-cpm2.c  src-plat-$(CONFIG_EMBEDDED6xx) += cuboot-pq2.c cuboot-mpc7448hpc2.c \  					cuboot-c2k.c gamecube-head.S \  					gamecube.c wii-head.S wii.c holly.c \ -					prpmc2800.c +					fixed-head.S mvme5100.c  src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c  src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c  src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c +src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S +src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S +src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S +src-plat-$(CONFIG_PPC_CELLEB) += pseries-head.S +src-plat-$(CONFIG_PPC_CELL_QPACE) += pseries-head.S  src-wlib := $(sort $(src-wlib-y))  src-plat := $(sort $(src-plat-y)) @@ -136,7 +150,11 @@ $(addprefix $(obj)/,$(libfdt) $(libfdtheader)): $(obj)/%: $(srctree)/scripts/dtc  $(obj)/empty.c:  	@touch $@ -$(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds: $(obj)/%: $(srctree)/$(src)/%.S +$(obj)/zImage.lds: $(obj)/%: $(srctree)/$(src)/%.S +	$(CROSS32CC) $(cpp_flags) -E -Wp,-MD,$(depfile) -P -Upowerpc \ +		-D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $< + +$(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds : $(obj)/%: $(srctree)/$(src)/%.S  	@cp $< $@  clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ @@ -203,7 +221,6 @@ image-$(CONFIG_PPC_CHRP)		+= zImage.chrp  image-$(CONFIG_PPC_EFIKA)		+= zImage.chrp  image-$(CONFIG_PPC_PMAC)		+= zImage.pmac  image-$(CONFIG_PPC_HOLLY)		+= dtbImage.holly -image-$(CONFIG_PPC_PRPMC2800)		+= dtbImage.prpmc2800  image-$(CONFIG_DEFAULT_UIMAGE)		+= uImage  image-$(CONFIG_EPAPR_BOOT)		+= zImage.epapr @@ -235,6 +252,7 @@ image-$(CONFIG_YOSEMITE)		+= cuImage.yosemite  image-$(CONFIG_ISS4xx)			+= treeImage.iss4xx \  					   treeImage.iss4xx-mpic  image-$(CONFIG_CURRITUCK)			+= treeImage.currituck +image-$(CONFIG_AKEBONO)			+= treeImage.akebono  # Board ports in arch/powerpc/platform/8xx/Kconfig  image-$(CONFIG_MPC86XADS)		+= cuImage.mpc866ads @@ -285,6 +303,7 @@ image-$(CONFIG_MPC7448HPC2)		+= cuImage.mpc7448hpc2  image-$(CONFIG_PPC_C2K)			+= cuImage.c2k  image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube  image-$(CONFIG_WII)			+= dtbImage.wii +image-$(CONFIG_MVME5100)		+= dtbImage.mvme5100  # Board port in arch/powerpc/platform/amigaone/Kconfig  image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone @@ -314,8 +333,8 @@ $(addprefix $(obj)/, $(initrd-y)): $(obj)/ramdisk.image.gz  $(obj)/zImage.initrd.%: vmlinux $(wrapperbits)  	$(call if_changed,wrap,$*,,,$(obj)/ramdisk.image.gz) -$(obj)/zImage.%: vmlinux $(wrapperbits) -	$(call if_changed,wrap,$*) +$(addprefix $(obj)/, $(sort $(filter zImage.%, $(image-y)))): vmlinux $(wrapperbits) +	$(call if_changed,wrap,$(subst $(obj)/zImage.,,$@))  # dtbImage% - a dtbImage is a zImage with an embedded device tree blob  $(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(obj)/%.dtb diff --git a/arch/powerpc/boot/addnote.c b/arch/powerpc/boot/addnote.c index 349b5530d2c..9d9f6f334d3 100644 --- a/arch/powerpc/boot/addnote.c +++ b/arch/powerpc/boot/addnote.c @@ -6,6 +6,8 @@   *   * Copyright 2000 Paul Mackerras.   * + * Adapted for 64 bit little endian images by Andrew Tauferner. + *   * 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 @@ -55,36 +57,61 @@ unsigned int rpanote[N_RPA_DESCR] = {  #define ROUNDUP(len)	(((len) + 3) & ~3) -unsigned char buf[512]; +unsigned char buf[1024]; +#define ELFDATA2LSB     1 +#define ELFDATA2MSB     2 +static int e_data = ELFDATA2MSB; +#define ELFCLASS32      1 +#define ELFCLASS64      2 +static int e_class = ELFCLASS32;  #define GET_16BE(off)	((buf[off] << 8) + (buf[(off)+1])) -#define GET_32BE(off)	((GET_16BE(off) << 16) + GET_16BE((off)+2)) - -#define PUT_16BE(off, v)	(buf[off] = ((v) >> 8) & 0xff, \ -				 buf[(off) + 1] = (v) & 0xff) -#define PUT_32BE(off, v)	(PUT_16BE((off), (v) >> 16), \ -				 PUT_16BE((off) + 2, (v))) +#define GET_32BE(off)	((GET_16BE(off) << 16U) + GET_16BE((off)+2U)) +#define GET_64BE(off)	((((unsigned long long)GET_32BE(off)) << 32ULL) + \ +			((unsigned long long)GET_32BE((off)+4ULL))) +#define PUT_16BE(off, v)(buf[off] = ((v) >> 8) & 0xff, \ +			 buf[(off) + 1] = (v) & 0xff) +#define PUT_32BE(off, v)(PUT_16BE((off), (v) >> 16L), PUT_16BE((off) + 2, (v))) +#define PUT_64BE(off, v)((PUT_32BE((off), (v) >> 32L), \ +			  PUT_32BE((off) + 4, (v)))) + +#define GET_16LE(off)	((buf[off]) + (buf[(off)+1] << 8)) +#define GET_32LE(off)	(GET_16LE(off) + (GET_16LE((off)+2U) << 16U)) +#define GET_64LE(off)	((unsigned long long)GET_32LE(off) + \ +			(((unsigned long long)GET_32LE((off)+4ULL)) << 32ULL)) +#define PUT_16LE(off, v) (buf[off] = (v) & 0xff, \ +			  buf[(off) + 1] = ((v) >> 8) & 0xff) +#define PUT_32LE(off, v) (PUT_16LE((off), (v)), PUT_16LE((off) + 2, (v) >> 16L)) +#define PUT_64LE(off, v) (PUT_32LE((off), (v)), PUT_32LE((off) + 4, (v) >> 32L)) + +#define GET_16(off)	(e_data == ELFDATA2MSB ? GET_16BE(off) : GET_16LE(off)) +#define GET_32(off)	(e_data == ELFDATA2MSB ? GET_32BE(off) : GET_32LE(off)) +#define GET_64(off)	(e_data == ELFDATA2MSB ? GET_64BE(off) : GET_64LE(off)) +#define PUT_16(off, v)	(e_data == ELFDATA2MSB ? PUT_16BE(off, v) : \ +			 PUT_16LE(off, v)) +#define PUT_32(off, v)  (e_data == ELFDATA2MSB ? PUT_32BE(off, v) : \ +			 PUT_32LE(off, v)) +#define PUT_64(off, v)  (e_data == ELFDATA2MSB ? PUT_64BE(off, v) : \ +			 PUT_64LE(off, v))  /* Structure of an ELF file */  #define E_IDENT		0	/* ELF header */ -#define	E_PHOFF		28 -#define E_PHENTSIZE	42 -#define E_PHNUM		44 -#define E_HSIZE		52	/* size of ELF header */ +#define	E_PHOFF		(e_class == ELFCLASS32 ? 28 : 32) +#define E_PHENTSIZE	(e_class == ELFCLASS32 ? 42 : 54) +#define E_PHNUM		(e_class == ELFCLASS32 ? 44 : 56) +#define E_HSIZE		(e_class == ELFCLASS32 ? 52 : 64)  #define EI_MAGIC	0	/* offsets in E_IDENT area */  #define EI_CLASS	4  #define EI_DATA		5  #define PH_TYPE		0	/* ELF program header */ -#define PH_OFFSET	4 -#define PH_FILESZ	16 -#define PH_HSIZE	32	/* size of program header */ +#define PH_OFFSET	(e_class == ELFCLASS32 ? 4 : 8) +#define PH_FILESZ	(e_class == ELFCLASS32 ? 16 : 32) +#define PH_HSIZE	(e_class == ELFCLASS32 ? 32 : 56)  #define PT_NOTE		4	/* Program header type = note */ -#define ELFCLASS32	1 -#define ELFDATA2MSB	2  unsigned char elf_magic[4] = { 0x7f, 'E', 'L', 'F' }; @@ -92,8 +119,8 @@ int  main(int ac, char **av)  {  	int fd, n, i; -	int ph, ps, np; -	int nnote, nnote2, ns; +	unsigned long ph, ps, np; +	long nnote, nnote2, ns;  	if (ac != 2) {  		fprintf(stderr, "Usage: %s elf-file\n", av[0]); @@ -114,26 +141,27 @@ main(int ac, char **av)  		exit(1);  	} -	if (n < E_HSIZE || memcmp(&buf[E_IDENT+EI_MAGIC], elf_magic, 4) != 0) +	if (memcmp(&buf[E_IDENT+EI_MAGIC], elf_magic, 4) != 0) +		goto notelf; +	e_class = buf[E_IDENT+EI_CLASS]; +	if (e_class != ELFCLASS32 && e_class != ELFCLASS64) +		goto notelf; +	e_data = buf[E_IDENT+EI_DATA]; +	if (e_data != ELFDATA2MSB && e_data != ELFDATA2LSB) +		goto notelf; +	if (n < E_HSIZE)  		goto notelf; -	if (buf[E_IDENT+EI_CLASS] != ELFCLASS32 -	    || buf[E_IDENT+EI_DATA] != ELFDATA2MSB) { -		fprintf(stderr, "%s is not a big-endian 32-bit ELF image\n", -			av[1]); -		exit(1); -	} - -	ph = GET_32BE(E_PHOFF); -	ps = GET_16BE(E_PHENTSIZE); -	np = GET_16BE(E_PHNUM); +	ph = (e_class == ELFCLASS32 ? GET_32(E_PHOFF) : GET_64(E_PHOFF)); +	ps = GET_16(E_PHENTSIZE); +	np = GET_16(E_PHNUM);  	if (ph < E_HSIZE || ps < PH_HSIZE || np < 1)  		goto notelf;  	if (ph + (np + 2) * ps + nnote + nnote2 > n)  		goto nospace;  	for (i = 0; i < np; ++i) { -		if (GET_32BE(ph + PH_TYPE) == PT_NOTE) { +		if (GET_32(ph + PH_TYPE) == PT_NOTE) {  			fprintf(stderr, "%s already has a note entry\n",  				av[1]);  			exit(0); @@ -148,15 +176,22 @@ main(int ac, char **av)  	/* fill in the program header entry */  	ns = ph + 2 * ps; -	PUT_32BE(ph + PH_TYPE, PT_NOTE); -	PUT_32BE(ph + PH_OFFSET, ns); -	PUT_32BE(ph + PH_FILESZ, nnote); +	PUT_32(ph + PH_TYPE, PT_NOTE); +	if (e_class == ELFCLASS32) +		PUT_32(ph + PH_OFFSET, ns); +	else +		PUT_64(ph + PH_OFFSET, ns); + +	if (e_class == ELFCLASS32) +		PUT_32(ph + PH_FILESZ, nnote); +	else +		PUT_64(ph + PH_FILESZ, nnote);  	/* fill in the note area we point to */  	/* XXX we should probably make this a proper section */ -	PUT_32BE(ns, strlen(arch) + 1); -	PUT_32BE(ns + 4, N_DESCR * 4); -	PUT_32BE(ns + 8, 0x1275); +	PUT_32(ns, strlen(arch) + 1); +	PUT_32(ns + 4, N_DESCR * 4); +	PUT_32(ns + 8, 0x1275);  	strcpy((char *) &buf[ns + 12], arch);  	ns += 12 + strlen(arch) + 1;  	for (i = 0; i < N_DESCR; ++i, ns += 4) @@ -164,21 +199,28 @@ main(int ac, char **av)  	/* fill in the second program header entry and the RPA note area */  	ph += ps; -	PUT_32BE(ph + PH_TYPE, PT_NOTE); -	PUT_32BE(ph + PH_OFFSET, ns); -	PUT_32BE(ph + PH_FILESZ, nnote2); +	PUT_32(ph + PH_TYPE, PT_NOTE); +	if (e_class == ELFCLASS32) +		PUT_32(ph + PH_OFFSET, ns); +	else +		PUT_64(ph + PH_OFFSET, ns); + +	if (e_class == ELFCLASS32) +		PUT_32(ph + PH_FILESZ, nnote); +	else +		PUT_64(ph + PH_FILESZ, nnote2);  	/* fill in the note area we point to */ -	PUT_32BE(ns, strlen(rpaname) + 1); -	PUT_32BE(ns + 4, sizeof(rpanote)); -	PUT_32BE(ns + 8, 0x12759999); +	PUT_32(ns, strlen(rpaname) + 1); +	PUT_32(ns + 4, sizeof(rpanote)); +	PUT_32(ns + 8, 0x12759999);  	strcpy((char *) &buf[ns + 12], rpaname);  	ns += 12 + ROUNDUP(strlen(rpaname) + 1);  	for (i = 0; i < N_RPA_DESCR; ++i, ns += 4)  		PUT_32BE(ns, rpanote[i]);  	/* Update the number of program headers */ -	PUT_16BE(E_PHNUM, np + 2); +	PUT_16(E_PHNUM, np + 2);  	/* write back */  	lseek(fd, (long) 0, SEEK_SET); diff --git a/arch/powerpc/boot/crt0.S b/arch/powerpc/boot/crt0.S index 0f7428a37ef..14de4f8778a 100644 --- a/arch/powerpc/boot/crt0.S +++ b/arch/powerpc/boot/crt0.S @@ -1,17 +1,20 @@  /*   * Copyright (C) Paul Mackerras 1997.   * + * Adapted for 64 bit LE PowerPC by Andrew Tauferner + *   * 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.   * - * NOTE: this code runs in 32 bit mode, is position-independent, - * and is packaged as ELF32.   */  #include "ppc_asm.h" +RELA = 7 +RELACOUNT = 0x6ffffff9 +  	.text  	/* A procedure descriptor used when booting this as a COFF file.  	 * When making COFF, this comes first in the link and we're @@ -21,6 +24,20 @@  _zimage_start_opd:  	.long	0x500000, 0, 0, 0 +#ifdef __powerpc64__ +.balign 8 +p_start:	.llong	_start +p_etext:	.llong	_etext +p_bss_start:	.llong	__bss_start +p_end:		.llong	_end + +p_toc:		.llong	__toc_start + 0x8000 - p_base +p_dyn:		.llong	__dynamic_start - p_base +p_rela:		.llong	__rela_dyn_start - p_base +p_prom:		.llong	0 +	.weak	_platform_stack_top +p_pstack:	.llong	_platform_stack_top +#else  p_start:	.long	_start  p_etext:	.long	_etext  p_bss_start:	.long	__bss_start @@ -28,6 +45,7 @@ p_end:		.long	_end  	.weak	_platform_stack_top  p_pstack:	.long	_platform_stack_top +#endif  	.weak	_zimage_start  	.globl	_zimage_start @@ -38,6 +56,7 @@ _zimage_start_lib:  	   and the address where we're running. */  	bl	.+4  p_base:	mflr	r10		/* r10 now points to runtime addr of p_base */ +#ifndef __powerpc64__  	/* grab the link address of the dynamic section in r11 */  	addis	r11,r10,(_GLOBAL_OFFSET_TABLE_-p_base)@ha  	lwz	r11,(_GLOBAL_OFFSET_TABLE_-p_base)@l(r11) @@ -51,8 +70,6 @@ p_base:	mflr	r10		/* r10 now points to runtime addr of p_base */  	/* The dynamic section contains a series of tagged entries.  	 * We need the RELA and RELACOUNT entries. */ -RELA = 7 -RELACOUNT = 0x6ffffff9  	li	r9,0  	li	r0,0  9:	lwz	r8,0(r12)	/* get tag */ @@ -120,9 +137,164 @@ RELACOUNT = 0x6ffffff9  	li	r0,0  	stwu	r0,-16(r1)	/* establish a stack frame */  6: +#else /* __powerpc64__ */ +	/* Save the prom pointer at p_prom. */ +	std	r5,(p_prom-p_base)(r10) + +	/* Set r2 to the TOC. */ +	ld	r2,(p_toc-p_base)(r10) +	add	r2,r2,r10 + +	/* Grab the link address of the dynamic section in r11. */ +	ld	r11,-32768(r2) +	cmpwi	r11,0 +	beq	3f              /* if not linked -pie then no dynamic section */ + +	ld	r11,(p_dyn-p_base)(r10) +	add	r11,r11,r10 +	ld	r9,(p_rela-p_base)(r10) +	add	r9,r9,r10 +	li	r7,0 +	li	r8,0 +9:	ld	r6,0(r11)       /* get tag */ +	cmpdi	r6,0 +	beq	12f              /* end of list */ +	cmpdi	r6,RELA +	bne	10f +	ld	r7,8(r11)       /* get RELA pointer in r7 */ +	b	11f +10:	addis	r6,r6,(-RELACOUNT)@ha +	cmpdi	r6,RELACOUNT@l +	bne	11f +	ld	r8,8(r11)       /* get RELACOUNT value in r8 */ +11:	addi	r11,r11,16 +	b	9b +12: +	cmpdi	r7,0            /* check we have both RELA and RELACOUNT */ +	cmpdi	cr1,r8,0 +	beq	3f +	beq	cr1,3f + +	/* Calcuate the runtime offset. */ +	subf	r7,r7,r9 + +	/* Run through the list of relocations and process the +	 * R_PPC64_RELATIVE ones. */ +	mtctr	r8 +13:	ld	r0,8(r9)        /* ELF64_R_TYPE(reloc->r_info) */ +	cmpdi	r0,22           /* R_PPC64_RELATIVE */ +	bne	3f +	ld	r6,0(r9)        /* reloc->r_offset */ +	ld	r0,16(r9)       /* reloc->r_addend */ +	add	r0,r0,r7 +	stdx	r0,r7,r6 +	addi	r9,r9,24 +	bdnz	13b + +	/* Do a cache flush for our text, in case the loader didn't */ +3:	ld	r9,p_start-p_base(r10)	/* note: these are relocated now */ +	ld	r8,p_etext-p_base(r10) +4:	dcbf	r0,r9 +	icbi	r0,r9 +	addi	r9,r9,0x20 +	cmpld	cr0,r9,r8 +	blt	4b +	sync +	isync + +	/* Clear the BSS */ +	ld	r9,p_bss_start-p_base(r10) +	ld	r8,p_end-p_base(r10) +	li	r0,0 +5:	std	r0,0(r9) +	addi	r9,r9,8 +	cmpld	cr0,r9,r8 +	blt	5b + +	/* Possibly set up a custom stack */ +	ld	r8,p_pstack-p_base(r10) +	cmpdi	r8,0 +	beq	6f +	ld	r1,0(r8) +	li	r0,0 +	stdu	r0,-16(r1)	/* establish a stack frame */ +6: +#endif  /* __powerpc64__ */  	/* Call platform_init() */  	bl	platform_init  	/* Call start */  	b	start + +#ifdef __powerpc64__ + +#define PROM_FRAME_SIZE 512 +#define SAVE_GPR(n, base)       std     n,8*(n)(base) +#define REST_GPR(n, base)       ld      n,8*(n)(base) +#define SAVE_2GPRS(n, base)     SAVE_GPR(n, base); SAVE_GPR(n+1, base) +#define SAVE_4GPRS(n, base)     SAVE_2GPRS(n, base); SAVE_2GPRS(n+2, base) +#define SAVE_8GPRS(n, base)     SAVE_4GPRS(n, base); SAVE_4GPRS(n+4, base) +#define SAVE_10GPRS(n, base)    SAVE_8GPRS(n, base); SAVE_2GPRS(n+8, base) +#define REST_2GPRS(n, base)     REST_GPR(n, base); REST_GPR(n+1, base) +#define REST_4GPRS(n, base)     REST_2GPRS(n, base); REST_2GPRS(n+2, base) +#define REST_8GPRS(n, base)     REST_4GPRS(n, base); REST_4GPRS(n+4, base) +#define REST_10GPRS(n, base)    REST_8GPRS(n, base); REST_2GPRS(n+8, base) + +/* prom handles the jump into and return from firmware.  The prom args pointer +   is loaded in r3. */ +.globl prom +prom: +	mflr	r0 +	std	r0,16(r1) +	stdu	r1,-PROM_FRAME_SIZE(r1) /* Save SP and create stack space */ + +	SAVE_GPR(2, r1) +	SAVE_GPR(13, r1) +	SAVE_8GPRS(14, r1) +	SAVE_10GPRS(22, r1) +	mfcr    r10 +	std     r10,8*32(r1) +	mfmsr   r10 +	std     r10,8*33(r1) + +	/* remove MSR_LE from msr but keep MSR_SF */ +	mfmsr	r10 +	rldicr	r10,r10,0,62 +	mtsrr1	r10 + +	/* Load FW address, set LR to label 1, and jump to FW */ +	bl	0f +0:	mflr	r10 +	addi	r11,r10,(1f-0b) +	mtlr	r11 + +	ld	r10,(p_prom-0b)(r10) +	mtsrr0	r10 + +	rfid + +1:	/* Return from OF */ +	FIXUP_ENDIAN + +	/* Restore registers and return. */ +	rldicl  r1,r1,0,32 + +	/* Restore the MSR (back to 64 bits) */ +	ld      r10,8*(33)(r1) +	mtmsr	r10 +	isync + +	/* Restore other registers */ +	REST_GPR(2, r1) +	REST_GPR(13, r1) +	REST_8GPRS(14, r1) +	REST_10GPRS(22, r1) +	ld      r10,8*32(r1) +	mtcr	r10 + +	addi    r1,r1,PROM_FRAME_SIZE +	ld      r0,16(r1) +	mtlr    r0 +	blr +#endif diff --git a/arch/powerpc/boot/dcr.h b/arch/powerpc/boot/dcr.h index cc73f7a95e2..bf8f4ede192 100644 --- a/arch/powerpc/boot/dcr.h +++ b/arch/powerpc/boot/dcr.h @@ -15,6 +15,10 @@  		asm volatile("mfdcrx %0,%1" : "=r"(rval) : "r"(rn)); \  		rval; \  	}) +#define mtdcrx(rn, val) \ +	({	\ +		asm volatile("mtdcrx %0,%1" : : "r"(rn), "r" (val)); \ +	})  /* 440GP/440GX SDRAM controller DCRs */  #define DCRN_SDRAM0_CFGADDR				0x010 diff --git a/arch/powerpc/boot/dts/ac14xx.dts b/arch/powerpc/boot/dts/ac14xx.dts index a543c4088cb..a1b883730b3 100644 --- a/arch/powerpc/boot/dts/ac14xx.dts +++ b/arch/powerpc/boot/dts/ac14xx.dts @@ -139,7 +139,14 @@  		};  	}; +	clocks { +		osc { +			clock-frequency = <25000000>; +		}; +	}; +  	soc@80000000 { +		bus-frequency = <80000000>;	/* 80 MHz ips bus */  		clock@f00 {  			compatible = "fsl,mpc5121rev2-clock", "fsl,mpc5121-clock"; diff --git a/arch/powerpc/boot/dts/adder875-redboot.dts b/arch/powerpc/boot/dts/adder875-redboot.dts index 28e9cd3d7a2..083984720b2 100644 --- a/arch/powerpc/boot/dts/adder875-redboot.dts +++ b/arch/powerpc/boot/dts/adder875-redboot.dts @@ -87,12 +87,10 @@  			PHY0: ethernet-phy@0 {  				reg = <0>; -				device_type = "ethernet-phy";  			};  			PHY1: ethernet-phy@1 {  				reg = <1>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/adder875-uboot.dts b/arch/powerpc/boot/dts/adder875-uboot.dts index 54fb60ec03e..e4554caf8f8 100644 --- a/arch/powerpc/boot/dts/adder875-uboot.dts +++ b/arch/powerpc/boot/dts/adder875-uboot.dts @@ -86,12 +86,10 @@  			PHY0: ethernet-phy@0 {  				reg = <0>; -				device_type = "ethernet-phy";  			};  			PHY1: ethernet-phy@1 {  				reg = <1>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/akebono.dts b/arch/powerpc/boot/dts/akebono.dts new file mode 100644 index 00000000000..f92ecfed3d2 --- /dev/null +++ b/arch/powerpc/boot/dts/akebono.dts @@ -0,0 +1,415 @@ +/* + * Device Tree Source for IBM Embedded PPC 476 Platform + * + * Copyright © 2013 Tony Breeds IBM Corporation + * Copyright © 2013 Alistair Popple IBM Corporation + * + * This file is licensed under the terms of the GNU General Public + * License version 2.  This program is licensed "as is" without + * any warranty of any kind, whether express or implied. + */ + +/dts-v1/; + +/memreserve/ 0x01f00000 0x00100000;	// spin table + +/ { +	#address-cells = <2>; +	#size-cells = <2>; +	model = "ibm,akebono"; +	compatible = "ibm,akebono", "ibm,476gtr"; +	dcr-parent = <&{/cpus/cpu@0}>; + +	aliases { +		serial0 = &UART0; +	}; + +	cpus { +		#address-cells = <1>; +		#size-cells = <0>; + +		cpu@0 { +			device_type = "cpu"; +			model = "PowerPC,476"; +			reg = <0>; +			clock-frequency = <1600000000>; // 1.6 GHz +			timebase-frequency = <100000000>; // 100Mhz +			i-cache-line-size = <32>; +			d-cache-line-size = <32>; +			i-cache-size = <32768>; +			d-cache-size = <32768>; +			dcr-controller; +			dcr-access-method = "native"; +			status = "ok"; +		}; +		cpu@1 { +			device_type = "cpu"; +			model = "PowerPC,476"; +			reg = <1>; +			clock-frequency = <1600000000>; // 1.6 GHz +			timebase-frequency = <100000000>; // 100Mhz +			i-cache-line-size = <32>; +			d-cache-line-size = <32>; +			i-cache-size = <32768>; +			d-cache-size = <32768>; +			dcr-controller; +			dcr-access-method = "native"; +			status = "disabled"; +			enable-method = "spin-table"; +			cpu-release-addr = <0x0 0x01f00000>; +		}; +	}; + +	memory { +		device_type = "memory"; +		reg = <0x0 0x0 0x0 0x0>; // filled in by zImage +	}; + +	MPIC: interrupt-controller { +		compatible = "chrp,open-pic"; +		interrupt-controller; +		dcr-reg = <0xffc00000 0x00040000>; +		#address-cells = <0>; +		#size-cells = <0>; +		#interrupt-cells = <2>; +		single-cpu-affinity; +	}; + +	plb { +		compatible = "ibm,plb6"; +		#address-cells = <2>; +		#size-cells = <2>; +		ranges; +		clock-frequency = <200000000>; // 200Mhz + +		HSTA0: hsta@310000e0000 { +			compatible = "ibm,476gtr-hsta-msi", "ibm,hsta-msi"; +			reg = <0x310 0x000e0000 0x0 0xf0>; +			interrupt-parent = <&MPIC>; +			interrupts = <108 0 +				      109 0 +				      110 0 +				      111 0 +				      112 0 +				      113 0 +				      114 0 +				      115 0 +				      116 0 +				      117 0 +				      118 0 +				      119 0 +				      120 0 +				      121 0 +				      122 0 +				      123 0>; +		}; + +		MAL0: mcmal { +			compatible = "ibm,mcmal-476gtr", "ibm,mcmal2"; +			dcr-reg = <0xc0000000 0x062>; +			num-tx-chans = <1>; +			num-rx-chans = <1>; +			#address-cells = <0>; +			#size-cells = <0>; +			interrupt-parent = <&MPIC>; +			interrupts = <	/*TXEOB*/ 77 0x4 +					/*RXEOB*/ 78 0x4 +					/*SERR*/  76 0x4 +					/*TXDE*/  79 0x4 +					/*RXDE*/  80 0x4>; +		}; + +		SATA0: sata@30000010000 { +			compatible = "ibm,476gtr-ahci"; +			reg = <0x300 0x00010000 0x0 0x10000>; +			interrupt-parent = <&MPIC>; +			interrupts = <93 2>; +		}; + +		EHCI0: ehci@30010000000 { +			compatible = "ibm,476gtr-ehci", "generic-ehci"; +			reg = <0x300 0x10000000 0x0 0x10000>; +			interrupt-parent = <&MPIC>; +			interrupts = <85 2>; +		}; + +		SD0: sd@30000000000 { +			compatible = "ibm,476gtr-sdhci", "generic-sdhci"; +			reg = <0x300 0x00000000 0x0 0x10000>; +			interrupts = <91 2>; +			interrupt-parent = <&MPIC>; +		}; + +		OHCI0: ohci@30010010000 { +			compatible = "ibm,476gtr-ohci", "generic-ohci"; +			reg = <0x300 0x10010000 0x0 0x10000>; +			interrupt-parent = <&MPIC>; +			interrupts = <89 1>; +			}; + +		OHCI1: ohci@30010020000 { +			compatible = "ibm,476gtr-ohci", "generic-ohci"; +			reg = <0x300 0x10020000 0x0 0x10000>; +			interrupt-parent = <&MPIC>; +			interrupts = <88 1>; +			}; + +		POB0: opb { +			compatible = "ibm,opb-4xx", "ibm,opb"; +			#address-cells = <1>; +			#size-cells = <1>; +			/* Wish there was a nicer way of specifying a full +			 * 32-bit range +			 */ +			ranges = <0x00000000 0x0000033f 0x00000000 0x80000000 +				  0x80000000 0x0000033f 0x80000000 0x80000000>; +			clock-frequency = <100000000>; + +			RGMII0: emac-rgmii-wol@50004 { +				compatible = "ibm,rgmii-wol-476gtr", "ibm,rgmii-wol"; +				reg = <0x50004 0x00000008>; +				has-mdio; +			}; + +			EMAC0: ethernet@30000 { +				device_type = "network"; +				compatible = "ibm,emac-476gtr", "ibm,emac4sync"; +				interrupt-parent = <&EMAC0>; +				interrupts = <0x0 0x1>; +				#interrupt-cells = <1>; +				#address-cells = <0>; +				#size-cells = <0>; +				interrupt-map = </*Status*/ 0x0 &MPIC 81 0x4 +						 /*Wake*/   0x1 &MPIC 82 0x4>; +				reg = <0x30000 0x78>; + +				/* local-mac-address will normally be added by +				 * the wrapper. If your device doesn't support +				 * passing data to the wrapper (in the form +				 * local-mac-addr=<hwaddr>) then you will need +				 * to set it manually here. */ +				//local-mac-address = [000000000000]; + +				mal-device = <&MAL0>; +				mal-tx-channel = <0>; +				mal-rx-channel = <0>; +				cell-index = <0>; +				max-frame-size = <9000>; +				rx-fifo-size = <4096>; +				tx-fifo-size = <2048>; +				rx-fifo-size-gige = <16384>; +				phy-mode = "rgmii"; +				phy-map = <0x00000000>; +				rgmii-wol-device = <&RGMII0>; +				has-inverted-stacr-oc; +				has-new-stacr-staopc; +			}; + +			UART0: serial@10000 { +				device_type = "serial"; +				compatible = "ns16750", "ns16550"; +				reg = <0x10000 0x00000008>; +				virtual-reg = <0xe8010000>; +				clock-frequency = <1851851>; +				current-speed = <38400>; +				interrupt-parent = <&MPIC>; +				interrupts = <39 2>; +			}; + +			IIC0: i2c@00000000 { +				compatible = "ibm,iic-476gtr", "ibm,iic"; +				reg = <0x0 0x00000020>; +				interrupt-parent = <&MPIC>; +				interrupts = <37 2>; +				#address-cells = <1>; +				#size-cells = <0>; +				rtc@68 { +					compatible = "stm,m41t80", "m41st85"; +					reg = <0x68>; +				}; +			}; + +			IIC1: i2c@00000100 { +				compatible = "ibm,iic-476gtr", "ibm,iic"; +				reg = <0x100 0x00000020>; +				interrupt-parent = <&MPIC>; +				interrupts = <38 2>; +				#address-cells = <1>; +				#size-cells = <0>; +				avr@58 { +					compatible = "ibm,akebono-avr"; +					reg = <0x58>; +				}; +			}; + +			FPGA0: fpga@ebc00000 { +				compatible = "ibm,akebono-fpga"; +				reg = <0xebc00000 0x8>; +			}; +		}; + +		PCIE0: pciex@10100000000 { +			device_type = "pci"; +			#interrupt-cells = <1>; +			#size-cells = <2>; +			#address-cells = <3>; +			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; +			primary; +			port = <0x0>; /* port number */ +			reg = <0x00000101 0x00000000 0x0 0x10000000	       /* Config space access */ +			       0x00000100 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */ +			dcr-reg = <0xc0 0x20>; + +//                                pci_space  < pci_addr          > < cpu_addr          > < size       > +			ranges = <0x02000000 0x00000000 0x80000000 0x00000110 0x80000000 0x0 0x80000000 +			          0x01000000 0x0        0x0        0x00000140 0x0        0x0 0x00010000>; + +			/* Inbound starting at 0x0 to 0x40000000000. In order to use MSI +			 * PCI devices must be able to write to the HSTA module. +			 */ +			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; + +			/* This drives busses 0 to 0xf */ +			bus-range = <0x0 0xf>; + +			/* Legacy interrupts (note the weird polarity, the bridge seems +			 * to invert PCIe legacy interrupts). +			 * We are de-swizzling here because the numbers are actually for +			 * port of the root complex virtual P2P bridge. But I want +			 * to avoid putting a node for it in the tree, so the numbers +			 * below are basically de-swizzled numbers. +			 * The real slot is on idsel 0, so the swizzling is 1:1 +			 */ +			interrupt-map-mask = <0x0 0x0 0x0 0x7>; +			interrupt-map = < +				0x0 0x0 0x0 0x1 &MPIC 45 0x2 /* int A */ +				0x0 0x0 0x0 0x2 &MPIC 46 0x2 /* int B */ +				0x0 0x0 0x0 0x3 &MPIC 47 0x2 /* int C */ +				0x0 0x0 0x0 0x4 &MPIC 48 0x2 /* int D */>; +		}; + +		PCIE1: pciex@20100000000 { +			device_type = "pci"; +			#interrupt-cells = <1>; +			#size-cells = <2>; +			#address-cells = <3>; +			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; +			primary; +			port = <0x1>; /* port number */ +			reg = <0x00000201 0x00000000 0x0 0x10000000	       /* Config space access */ +			       0x00000200 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */ +			dcr-reg = <0x100 0x20>; + +//                                pci_space  < pci_addr          > < cpu_addr          > < size       > +			ranges = <0x02000000 0x00000000 0x80000000 0x00000210 0x80000000 0x0 0x80000000 +			          0x01000000 0x0        0x0        0x00000240 0x0        0x0 0x00010000>; + +			/* Inbound starting at 0x0 to 0x40000000000. In order to use MSI +			 * PCI devices must be able to write to the HSTA module. +			 */ +			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; + +			/* This drives busses 0 to 0xf */ +			bus-range = <0x0 0xf>; + +			/* Legacy interrupts (note the weird polarity, the bridge seems +			 * to invert PCIe legacy interrupts). +			 * We are de-swizzling here because the numbers are actually for +			 * port of the root complex virtual P2P bridge. But I want +			 * to avoid putting a node for it in the tree, so the numbers +			 * below are basically de-swizzled numbers. +			 * The real slot is on idsel 0, so the swizzling is 1:1 +			 */ +			interrupt-map-mask = <0x0 0x0 0x0 0x7>; +			interrupt-map = < +				0x0 0x0 0x0 0x1 &MPIC 53 0x2 /* int A */ +				0x0 0x0 0x0 0x2 &MPIC 54 0x2 /* int B */ +				0x0 0x0 0x0 0x3 &MPIC 55 0x2 /* int C */ +				0x0 0x0 0x0 0x4 &MPIC 56 0x2 /* int D */>; +		}; + +		PCIE2: pciex@18100000000 { +			device_type = "pci"; +			#interrupt-cells = <1>; +			#size-cells = <2>; +			#address-cells = <3>; +			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; +			primary; +			port = <0x2>; /* port number */ +			reg = <0x00000181 0x00000000 0x0 0x10000000	       /* Config space access */ +			       0x00000180 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */ +			dcr-reg = <0xe0 0x20>; + +//                                pci_space  < pci_addr          > < cpu_addr          > < size       > +			ranges = <0x02000000 0x00000000 0x80000000 0x00000190 0x80000000 0x0 0x80000000 +			          0x01000000 0x0        0x0        0x000001c0 0x0        0x0 0x00010000>; + +			/* Inbound starting at 0x0 to 0x40000000000. In order to use MSI +			 * PCI devices must be able to write to the HSTA module. +			 */ +			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; + +			/* This drives busses 0 to 0xf */ +			bus-range = <0x0 0xf>; + +			/* Legacy interrupts (note the weird polarity, the bridge seems +			 * to invert PCIe legacy interrupts). +			 * We are de-swizzling here because the numbers are actually for +			 * port of the root complex virtual P2P bridge. But I want +			 * to avoid putting a node for it in the tree, so the numbers +			 * below are basically de-swizzled numbers. +			 * The real slot is on idsel 0, so the swizzling is 1:1 +			 */ +			interrupt-map-mask = <0x0 0x0 0x0 0x7>; +			interrupt-map = < +				0x0 0x0 0x0 0x1 &MPIC 61 0x2 /* int A */ +				0x0 0x0 0x0 0x2 &MPIC 62 0x2 /* int B */ +				0x0 0x0 0x0 0x3 &MPIC 63 0x2 /* int C */ +				0x0 0x0 0x0 0x4 &MPIC 64 0x2 /* int D */>; +		}; + +		PCIE3: pciex@28100000000 { +			device_type = "pci"; +			#interrupt-cells = <1>; +			#size-cells = <2>; +			#address-cells = <3>; +			compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex"; +			primary; +			port = <0x3>; /* port number */ +			reg = <0x00000281 0x00000000 0x0 0x10000000	       /* Config space access */ +			       0x00000280 0x00000000 0x0 0x00001000>;	/* UTL Registers space access */ +			dcr-reg = <0x120 0x20>; + +//                                pci_space  < pci_addr          > < cpu_addr          > < size       > +			ranges = <0x02000000 0x00000000 0x80000000 0x00000290 0x80000000 0x0 0x80000000 +			          0x01000000 0x0        0x0        0x000002c0 0x0        0x0 0x00010000>; + +			/* Inbound starting at 0x0 to 0x40000000000. In order to use MSI +			 * PCI devices must be able to write to the HSTA module. +			 */ +			dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x400 0x0>; + +			/* This drives busses 0 to 0xf */ +			bus-range = <0x0 0xf>; + +			/* Legacy interrupts (note the weird polarity, the bridge seems +			 * to invert PCIe legacy interrupts). +			 * We are de-swizzling here because the numbers are actually for +			 * port of the root complex virtual P2P bridge. But I want +			 * to avoid putting a node for it in the tree, so the numbers +			 * below are basically de-swizzled numbers. +			 * The real slot is on idsel 0, so the swizzling is 1:1 +			 */ +			interrupt-map-mask = <0x0 0x0 0x0 0x7>; +			interrupt-map = < +				0x0 0x0 0x0 0x1 &MPIC 69 0x2 /* int A */ +				0x0 0x0 0x0 0x2 &MPIC 70 0x2 /* int B */ +				0x0 0x0 0x0 0x3 &MPIC 71 0x2 /* int C */ +				0x0 0x0 0x0 0x4 &MPIC 72 0x2 /* int D */>; +		}; +	}; + +	chosen { +		linux,stdout-path = &UART0; +	}; +}; diff --git a/arch/powerpc/boot/dts/apollo3g.dts b/arch/powerpc/boot/dts/apollo3g.dts new file mode 100644 index 00000000000..c2e2af9d19e --- /dev/null +++ b/arch/powerpc/boot/dts/apollo3g.dts @@ -0,0 +1,419 @@ +/* + * Device Tree for Bluestone (APM821xx) board. + * + * Copyright (c) 2010, Applied Micro Circuits Corporation + * Author: Tirumala R Marri <tmarri@apm.com> + * + * 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +/dts-v1/; + +/ { +	#address-cells = <2>; +	#size-cells = <1>; +	model = "apm,bluestone"; +	compatible = "apm,bluestone"; +	dcr-parent = <&{/cpus/cpu@0}>; + +	aliases { +		ethernet0 = &EMAC0; +		serial0 = &UART0; +	}; + +	cpus { +		#address-cells = <1>; +		#size-cells = <0>; + +		cpu@0 { +			device_type = "cpu"; +			model = "PowerPC,apm821xx"; +			reg = <0x00000000>; +			clock-frequency = <0>; /* Filled in by U-Boot */ +			timebase-frequency = <0>; /* Filled in by U-Boot */ +			i-cache-line-size = <32>; +			d-cache-line-size = <32>; +			i-cache-size = <32768>; +			d-cache-size = <32768>; +			dcr-controller; +			dcr-access-method = "native"; +			next-level-cache = <&L2C0>; +		}; +	}; + +	memory { +		device_type = "memory"; +		reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */ +	}; + +	UIC0: interrupt-controller0 { +		compatible = "ibm,uic"; +		interrupt-controller; +		cell-index = <0>; +		dcr-reg = <0x0c0 0x009>; +		#address-cells = <0>; +		#size-cells = <0>; +		#interrupt-cells = <2>; +	}; + +	UIC1: interrupt-controller1 { +		compatible = "ibm,uic"; +		interrupt-controller; +		cell-index = <1>; +		dcr-reg = <0x0d0 0x009>; +		#address-cells = <0>; +		#size-cells = <0>; +		#interrupt-cells = <2>; +		interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */ +		interrupt-parent = <&UIC0>; +	}; + +	UIC2: interrupt-controller2 { +		compatible = "ibm,uic"; +		interrupt-controller; +		cell-index = <2>; +		dcr-reg = <0x0e0 0x009>; +		#address-cells = <0>; +		#size-cells = <0>; +		#interrupt-cells = <2>; +		interrupts = <0xa 0x4 0xb 0x4>; /* cascade */ +		interrupt-parent = <&UIC0>; +	}; + +	UIC3: interrupt-controller3 { +		compatible = "ibm,uic"; +		interrupt-controller; +		cell-index = <3>; +		dcr-reg = <0x0f0 0x009>; +		#address-cells = <0>; +		#size-cells = <0>; +		#interrupt-cells = <2>; +		interrupts = <0x10 0x4 0x11 0x4>; /* cascade */ +		interrupt-parent = <&UIC0>; +	}; + +	OCM: ocm@400040000 { +		compatible = "ibm,ocm"; +		status = "ok"; +		cell-index = <1>; +		/* configured in U-Boot */ +		reg = <4 0x00040000 0x8000>; /* 32K */ +	}; + +	SDR0: sdr { +		compatible = "ibm,sdr-apm821xx"; +		dcr-reg = <0x00e 0x002>; +	}; + +	CPR0: cpr { +		compatible = "ibm,cpr-apm821xx"; +		dcr-reg = <0x00c 0x002>; +	}; + +	L2C0: l2c { +		compatible = "ibm,l2-cache-apm82181", "ibm,l2-cache"; +		dcr-reg = <0x020 0x008 +			   0x030 0x008>; +		cache-line-size = <32>; +		cache-size = <262144>; +		interrupt-parent = <&UIC1>; +		interrupts = <11 1>; +	}; + +	plb { +		compatible = "ibm,plb4"; +		#address-cells = <2>; +		#size-cells = <1>; +		ranges; +		clock-frequency = <0>; /* Filled in by U-Boot */ + +		SDRAM0: sdram { +			compatible = "ibm,sdram-apm821xx"; +			dcr-reg = <0x010 0x002>; +		}; + +		MAL0: mcmal { +			compatible = "ibm,mcmal2"; +			descriptor-memory = "ocm"; +			dcr-reg = <0x180 0x062>; +			num-tx-chans = <1>; +			num-rx-chans = <1>; +			#address-cells = <0>; +			#size-cells = <0>; +			interrupt-parent = <&UIC2>; +			interrupts = <	/*TXEOB*/ 0x6 0x4 +					/*RXEOB*/ 0x7 0x4 +					/*SERR*/  0x3 0x4 +					/*TXDE*/  0x4 0x4 +					/*RXDE*/  0x5 0x4 +					/*TX0 COAL*/  0x8 0x2 +					/*TX1 COAL  0x9 0x2*/ +					/*RX0 COAL*/  0xc 0x2 +					/*RX1 COAL  0xd 0x2*/>; +		}; + +		/* SATA DWC devices */ +		SATA0: sata@bffd1000 { +				compatible = "amcc,sata-460ex"; +				reg = <4 0xbffd1000 0x800       /* SATA0 */ +					   4 0xbffd0800 0x400>;     /* AHBDMA */ +				dma-channel=<0>; +				interrupt-parent = <&UIC0>; +				interrupts = <26 4      /* SATA0 */ +							  25 4>;    /* AHBDMA */ +		}; + +		SATA1: sata@bffd1800 { +			compatible = "amcc,sata-460ex"; +			reg = <4 0xbffd1800 0x800       /* SATA1 */ +			       4 0xbffd0800 0x400>;     /* AHBDMA */ +			dma-channel=<1>; +			interrupt-parent = <&UIC0>; +			interrupts = <27 4      /* SATA1 */ +				      25 4>;    /* AHBDMA */ +		}; + +		ADMA: adma { +			compatible = "amcc,apm82181-adma"; +			device_type = "dma"; +			#address-cells = <2>; +			#size-cells = <1>; + +			/*dma-4channel@0{ +				compatible = "amcc,apm82181-dma-4channel"; +				cell-index = <0>; +				label = "plb_dma0"; +				interrupt-parent = <&UIC0>; +				interrupts = <0xc 0x4>; +				pool_size = <0x4000>; +				dcr-reg = <0x200 0x207>; +			};*/ + +			dma-4channel@1 { +				compatible = "amcc,apm82181-dma-4channel"; +				cell-index = <1>; +				label = "plb_dma1"; +				interrupt-parent = <&UIC0>; +				interrupts = <0xd 0x4>; +				pool_size = <0x4000>; +				dcr-reg = <0x208 0x20f>; +			}; +			dma-4channel@2 { +				compatible = "amcc,apm82181-dma-4channel"; +				cell-index = <2>; +				label = "plb_dma2"; +				interrupt-parent = <&UIC0>; +				interrupts = <0xe 0x4>; +				pool_size = <0x4000>; +				dcr-reg = <0x210 0x217>; +			}; +			dma-4channel@3 { +				compatible = "amcc,apm82181-dma-4channel"; +				cell-index = <3>; +				label = "plb_dma3"; +				interrupt-parent = <&UIC0>; +				interrupts = <0xf 0x4>; +				pool_size = <0x4000>; +				dcr-reg = <0x218 0x21f>; +			}; +		}; + +		POB0: opb { +			compatible = "ibm,opb"; +			#address-cells = <1>; +			#size-cells = <1>; +			ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>; +			clock-frequency = <0>; /* Filled in by U-Boot */ + +			EBC0: ebc { +				compatible = "ibm,ebc"; +				dcr-reg = <0x012 0x002>; +				#address-cells = <2>; +				#size-cells = <1>; +				clock-frequency = <0>; /* Filled in by U-Boot */ +				/* ranges property is supplied by U-Boot */ +				ranges = < 0x00000003 0x00000000 0xe0000000 0x8000000>; +				interrupts = <0x6 0x4>; +				interrupt-parent = <&UIC1>; + +				nor_flash@0,0 { +					compatible = "amd,s29gl512n", "jedec-flash", "cfi-flash"; +					bank-width = <1>; +					reg = <0x00000000 0x00000000 0x00080000>; +					#address-cells = <1>; +					#size-cells = <1>; +					partition@0 { +						label = "3genv"; +						reg = <0x00000000 0x20000>; +					}; +					partition@1 { +						label = "u-boot"; +						reg = <0x20000 0x60000>; +					}; +				}; + +				ndfc@1,0 { +					compatible = "ibm,ndfc"; +					reg = <0x00000003 0x00000000 0x00002000>; +					ccr = <0x00001000>; +					bank-settings = <0x80002222>; +					#address-cells = <1>; +					#size-cells = <1>; +					/* 2Gb Nand Flash */ +					nand { +						#address-cells = <1>; +						#size-cells = <1>; + +						partition@0 { +							label = "firmware"; +							reg   = <0x00000000 0x00C00000>; +						}; +						partition@c00000 { +							label = "environment"; +							reg   = <0x00C00000 0x00B00000>; +						}; +						partition@1700000 { +							label = "kernel"; +							reg   = <0x01700000 0x00E00000>; +						}; +						partition@2500000 { +							label = "root"; +							reg   = <0x02500000 0x08200000>; +						}; +						partition@a700000 { +							label = "device-tree"; +							reg   = <0x0A700000 0x00B00000>; +						}; +						partition@b200000 { +							label = "config"; +							reg   = <0x0B200000 0x00D00000>; +						}; +						partition@bf00000 { +							label = "diag"; +							reg   = <0x0BF00000 0x00C00000>; +						}; +						partition@cb00000 { +							label = "vendor"; +							reg   = <0x0CB00000 0x3500000>; +						}; +					}; +				}; +			}; + +			UART0: serial@ef600300 { +				device_type = "serial"; +				compatible = "ns16550"; +				reg = <0xef600300 0x00000008>; +				virtual-reg = <0xef600300>; +				clock-frequency = <0>; /* Filled in by U-Boot */ +				current-speed = <0>; /* Filled in by U-Boot */ +				interrupt-parent = <&UIC1>; +				interrupts = <0x1 0x4>; +			}; + +			IIC0: i2c@ef600700 { +				compatible = "ibm,iic"; +				reg = <0xef600700 0x00000014>; +				interrupt-parent = <&UIC0>; +				interrupts = <0x2 0x4>; +			}; + +			RGMII0: emac-rgmii@ef601500 { +				compatible = "ibm,rgmii"; +				reg = <0xef601500 0x00000008>; +				has-mdio; +			}; + +			TAH0: emac-tah@ef601350 { +				compatible = "ibm,tah"; +				reg = <0xef601350 0x00000030>; +			}; + +			EMAC0: ethernet@ef600c00 { +				device_type = "network"; +				compatible = "ibm,emac-apm821xx", "ibm,emac4sync"; +				interrupt-parent = <&EMAC0>; +				interrupts = <0x0 0x1>; +				#interrupt-cells = <1>; +				#address-cells = <0>; +				#size-cells = <0>; +				interrupt-map = </*Status*/ 0x0 &UIC2 0x10 0x4 +						 /*Wake*/   0x1 &UIC2 0x14 0x4>; +				reg = <0xef600c00 0x000000c4>; +				local-mac-address = [000000000000]; /* Filled in by U-Boot */ +				mal-device = <&MAL0>; +				mal-tx-channel = <0>; +				mal-rx-channel = <0>; +				cell-index = <0>; +				max-frame-size = <9000>; +				rx-fifo-size = <16384>; +				tx-fifo-size = <2048>; +				phy-mode = "rgmii"; +				phy-map = <0x00000000>; +				rgmii-device = <&RGMII0>; +				rgmii-channel = <0>; +				tah-device = <&TAH0>; +				tah-channel = <0>; +				has-inverted-stacr-oc; +				has-new-stacr-staopc; +			}; +		}; + +		DMA: plb_dma@400300200 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "amcc,dma"; +			cell-index = <0>; +			reg = <4 0x00300200 0x200>; +			dcr-reg = <0x100 0x13f>; +			interrupt-parent = <&UIC0>; +			interrupts = <0 1 2 3>; +			interrupt-map = < /*chan 0*/ 0 &UIC0 12 4 +					  /* chan1*/ 1 &UIC0 13 4 +					  /* chan2*/ 2 &UIC0 14 4 +					  /* chan3*/ 3 &UIC0 15 4>; + + +			dma-4channel@0{ +				compatible = "amcc,dma-4channel"; +				cell-index = <0>; +				label = "channel0"; +				reg = <0x100 0x107>; +			}; +			/* +			dma-4channel@1 { +				compatible = "amcc,dma-4channel"; +				cell-index = <1>; +				label = "channel1"; +				reg = <0x108 0x10f>; +			}; +			dma-4channel@2 { +				compatible = "amcc,dma-4channel"; +				cell-index = <2>; +				label = "channel2"; +				reg = <0x110 0x117>; +			}; +			dma-4channel@3 { +				compatible = "amcc,dma-4channel"; +				cell-index = <3>; +				label = "channel3"; +				reg = <0x118 0x11f>; +			}; +			*/ +		}; +	}; +}; diff --git a/arch/powerpc/boot/dts/asp834x-redboot.dts b/arch/powerpc/boot/dts/asp834x-redboot.dts index 227290db866..9198745f45f 100644 --- a/arch/powerpc/boot/dts/asp834x-redboot.dts +++ b/arch/powerpc/boot/dts/asp834x-redboot.dts @@ -207,14 +207,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/b4860emu.dts b/arch/powerpc/boot/dts/b4860emu.dts new file mode 100644 index 00000000000..85646b4f96e --- /dev/null +++ b/arch/powerpc/boot/dts/b4860emu.dts @@ -0,0 +1,223 @@ +/* + * B4860 emulator Device Tree Source + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * This software is provided by Freescale Semiconductor "as is" and any + * express or implied warranties, including, but not limited to, the implied + * warranties of merchantability and fitness for a particular purpose are + * disclaimed. In no event shall Freescale Semiconductor be liable for any + * direct, indirect, incidental, special, exemplary, or consequential damages + * (including, but not limited to, procurement of substitute goods or services; + * loss of use, data, or profits; or business interruption) however caused and + * on any theory of liability, whether in contract, strict liability, or tort + * (including negligence or otherwise) arising in any way out of the use of + * this software, even if advised of the possibility of such damage. + */ + +/dts-v1/; + +/include/ "fsl/e6500_power_isa.dtsi" + +/ { +	compatible = "fsl,B4860"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	aliases { +		ccsr = &soc; + +		serial0 = &serial0; +		serial1 = &serial1; +		serial2 = &serial2; +		serial3 = &serial3; +		dma0 = &dma0; +		dma1 = &dma1; +	}; + +	cpus { +		#address-cells = <1>; +		#size-cells = <0>; + +		cpu0: PowerPC,e6500@0 { +			device_type = "cpu"; +			reg = <0 1>; +			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>; +		}; +		cpu1: PowerPC,e6500@2 { +			device_type = "cpu"; +			reg = <2 3>; +			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>; +		}; +		cpu2: PowerPC,e6500@4 { +			device_type = "cpu"; +			reg = <4 5>; +			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>; +		}; +		cpu3: PowerPC,e6500@6 { +			device_type = "cpu"; +			reg = <6 7>; +			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>; +		}; +	}; +}; + +/ { +	model = "fsl,B4860QDS"; +	compatible = "fsl,B4860EMU", "fsl,B4860QDS"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	ifc: localbus@ffe124000 { +		reg = <0xf 0xfe124000 0 0x2000>; +		ranges = <0 0 0xf 0xe8000000 0x08000000 +			  2 0 0xf 0xff800000 0x00010000 +			  3 0 0xf 0xffdf0000 0x00008000>; + +		nor@0,0 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "cfi-flash"; +			reg = <0x0 0x0 0x8000000>; +			bank-width = <2>; +			device-width = <1>; +		}; +	}; + +	memory { +		device_type = "memory"; +	}; + +	soc: soc@ffe000000 { +		ranges = <0x00000000 0xf 0xfe000000 0x1000000>; +		reg = <0xf 0xfe000000 0 0x00001000>; +	}; +}; + +&ifc { +	#address-cells = <2>; +	#size-cells = <1>; +	compatible = "fsl,ifc", "simple-bus"; +	interrupts = <25 2 0 0>; +}; + +&soc { +	#address-cells = <1>; +	#size-cells = <1>; +	device_type = "soc"; +	compatible = "simple-bus"; + +	soc-sram-error { +		compatible = "fsl,soc-sram-error"; +		interrupts = <16 2 1 2>; +	}; + +	corenet-law@0 { +		compatible = "fsl,corenet-law"; +		reg = <0x0 0x1000>; +		fsl,num-laws = <32>; +	}; + +	ddr1: memory-controller@8000 { +		compatible = "fsl,qoriq-memory-controller-v4.5", "fsl,qoriq-memory-controller"; +		reg = <0x8000 0x1000>; +		interrupts = <16 2 1 8>; +	}; + +	ddr2: memory-controller@9000 { +		compatible = "fsl,qoriq-memory-controller-v4.5","fsl,qoriq-memory-controller"; +		reg = <0x9000 0x1000>; +		interrupts = <16 2 1 9>; +	}; + +	cpc: l3-cache-controller@10000 { +		compatible = "fsl,b4-l3-cache-controller", "cache"; +		reg = <0x10000 0x1000 +		       0x11000 0x1000>; +		interrupts = <16 2 1 4>; +	}; + +	corenet-cf@18000 { +		compatible = "fsl,corenet2-cf", "fsl,corenet-cf"; +		reg = <0x18000 0x1000>; +		interrupts = <16 2 1 0>; +		fsl,ccf-num-csdids = <32>; +		fsl,ccf-num-snoopids = <32>; +	}; + +	iommu@20000 { +		compatible = "fsl,pamu-v1.0", "fsl,pamu"; +		reg = <0x20000 0x4000>; +		fsl,portid-mapping = <0x8000>; +		#address-cells = <1>; +		#size-cells = <1>; +		interrupts = < +			24 2 0 0 +			16 2 1 1>; +		pamu0: pamu@0 { +			reg = <0 0x1000>; +			fsl,primary-cache-geometry = <8 1>; +			fsl,secondary-cache-geometry = <32 2>; +		}; +	}; + +/include/ "fsl/qoriq-mpic.dtsi" + +	guts: global-utilities@e0000 { +		compatible = "fsl,b4-device-config"; +		reg = <0xe0000 0xe00>; +		fsl,has-rstcr; +		fsl,liodn-bits = <12>; +	}; + +	clockgen: global-utilities@e1000 { +		compatible = "fsl,b4-clockgen", "fsl,qoriq-clockgen-2.0"; +		reg = <0xe1000 0x1000>; +	}; + +/include/ "fsl/qoriq-dma-0.dtsi" +	dma@100300 { +		fsl,iommu-parent = <&pamu0>; +		fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */ +	}; + +/include/ "fsl/qoriq-dma-1.dtsi" +	dma@101300 { +		fsl,iommu-parent = <&pamu0>; +		fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ +	}; + +/include/ "fsl/qoriq-i2c-0.dtsi" +/include/ "fsl/qoriq-i2c-1.dtsi" +/include/ "fsl/qoriq-duart-0.dtsi" +/include/ "fsl/qoriq-duart-1.dtsi" + +	L2: l2-cache-controller@c20000 { +		compatible = "fsl,b4-l2-cache-controller"; +		reg = <0xc20000 0x1000>; +		next-level-cache = <&cpc>; +	}; +}; diff --git a/arch/powerpc/boot/dts/b4qds.dtsi b/arch/powerpc/boot/dts/b4qds.dtsi index e6d2f8f9054..8b47edcfabf 100644 --- a/arch/powerpc/boot/dts/b4qds.dtsi +++ b/arch/powerpc/boot/dts/b4qds.dtsi @@ -120,25 +120,38 @@  		};  		i2c@118000 { -			eeprom@50 { -				compatible = "at24,24c64"; -				reg = <0x50>; -			}; -			eeprom@51 { -				compatible = "at24,24c256"; -				reg = <0x51>; -			}; -			eeprom@53 { -				compatible = "at24,24c256"; -				reg = <0x53>; -			}; -			eeprom@57 { -				compatible = "at24,24c256"; -				reg = <0x57>; -			}; -			rtc@68 { -				compatible = "dallas,ds3232"; -				reg = <0x68>; +			mux@77 { +				compatible = "nxp,pca9547"; +				reg = <0x77>; +				#address-cells = <1>; +				#size-cells = <0>; + +				i2c@0 { +					#address-cells = <1>; +					#size-cells = <0>; +					reg = <0>; + +					eeprom@50 { +						compatible = "at24,24c64"; +						reg = <0x50>; +					}; +					eeprom@51 { +						compatible = "at24,24c256"; +						reg = <0x51>; +					}; +					eeprom@53 { +						compatible = "at24,24c256"; +						reg = <0x53>; +					}; +					eeprom@57 { +						compatible = "at24,24c256"; +						reg = <0x57>; +					}; +					rtc@68 { +						compatible = "dallas,ds3232"; +						reg = <0x68>; +					}; +				};  			};  		}; diff --git a/arch/powerpc/boot/dts/bsc9132qds.dts b/arch/powerpc/boot/dts/bsc9132qds.dts new file mode 100644 index 00000000000..6cab1062bc7 --- /dev/null +++ b/arch/powerpc/boot/dts/bsc9132qds.dts @@ -0,0 +1,35 @@ +/* + * BSC9132 QDS Device Tree Source + * + * Copyright 2014 Freescale Semiconductor Inc. + * + * 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. + */ + +/include/ "fsl/bsc9132si-pre.dtsi" + +/ { +	model = "fsl,bsc9132qds"; +	compatible = "fsl,bsc9132qds"; + +	memory { +		device_type = "memory"; +	}; + +	ifc: ifc@ff71e000 { +		/* NOR, NAND Flash on board */ +		ranges = <0x0 0x0 0x0 0x88000000 0x08000000 +			  0x1 0x0 0x0 0xff800000 0x00010000>; +		reg = <0x0 0xff71e000 0x0 0x2000>; +	}; + +	soc: soc@ff700000 { +		ranges = <0x0 0x0 0xff700000 0x100000>; +	}; +}; + +/include/ "bsc9132qds.dtsi" +/include/ "fsl/bsc9132si-post.dtsi" diff --git a/arch/powerpc/boot/dts/bsc9132qds.dtsi b/arch/powerpc/boot/dts/bsc9132qds.dtsi new file mode 100644 index 00000000000..af8e8883022 --- /dev/null +++ b/arch/powerpc/boot/dts/bsc9132qds.dtsi @@ -0,0 +1,101 @@ +/* + * BSC9132 QDS Device Tree Source stub (no addresses or top-level ranges) + * + * Copyright 2014 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +&ifc { +	nor@0,0 { +		#address-cells = <1>; +		#size-cells = <1>; +		compatible = "cfi-flash"; +		reg = <0x0 0x0 0x8000000>; +		bank-width = <2>; +		device-width = <1>; +	}; + +	nand@1,0 { +		#address-cells = <1>; +		#size-cells = <1>; +		compatible = "fsl,ifc-nand"; +		reg = <0x1 0x0 0x4000>; +	}; +}; + +&soc { +	spi@7000 { +		flash@0 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "spansion,s25sl12801"; +			reg = <0>; +			spi-max-frequency = <30000000>; +		}; +	}; + +	i2c@3000 { +		fpga: fpga@66 { +			compatible = "fsl,bsc9132qds-fpga", "fsl,fpga-qixis-i2c"; +			reg = <0x66>; +		}; +	}; + +	usb@22000 { +		phy_type = "ulpi"; +	}; + +	mdio@24000 { +		phy0: ethernet-phy@0 { +			reg = <0x0>; +		}; + +		phy1: ethernet-phy@1 { +			reg = <0x1>; +		}; + +		tbi0: tbi-phy@11 { +			reg = <0x1f>; +			device_type = "tbi-phy"; +		}; +	}; + +	enet0: ethernet@b0000 { +		phy-handle = <&phy0>; +		tbi-handle = <&tbi0>; +		phy-connection-type = "sgmii"; +	}; + +	enet1: ethernet@b1000 { +		phy-handle = <&phy1>; +		tbi-handle = <&tbi0>; +		phy-connection-type = "sgmii"; +	}; +}; diff --git a/arch/powerpc/boot/dts/c293pcie.dts b/arch/powerpc/boot/dts/c293pcie.dts index 1238bda8901..6681cc21030 100644 --- a/arch/powerpc/boot/dts/c293pcie.dts +++ b/arch/powerpc/boot/dts/c293pcie.dts @@ -45,6 +45,7 @@  	ifc: ifc@fffe1e000 {  		reg = <0xf 0xffe1e000 0 0x2000>;  		ranges = <0x0 0x0 0xf 0xec000000 0x04000000 +			  0x1 0x0 0xf 0xff800000 0x00010000  			  0x2 0x0 0xf 0xffdf0000 0x00010000>;  	}; diff --git a/arch/powerpc/boot/dts/c2k.dts b/arch/powerpc/boot/dts/c2k.dts index f5d625fa3e5..1e32903cb0a 100644 --- a/arch/powerpc/boot/dts/c2k.dts +++ b/arch/powerpc/boot/dts/c2k.dts @@ -73,19 +73,16 @@  			compatible = "marvell,mv64360-mdio";  			reg = <0x2000 4>;  			PHY0: ethernet-phy@0 { -				device_type = "ethernet-phy";  				interrupts = <76>;	/* GPP 12 */  				interrupt-parent = <&PIC>;  				reg = <0>;  			};  			PHY1: ethernet-phy@1 { -				device_type = "ethernet-phy";  				interrupts = <76>;	/* GPP 12 */  				interrupt-parent = <&PIC>;  				reg = <1>;  			};  			PHY2: ethernet-phy@2 { -				device_type = "ethernet-phy";  				interrupts = <76>;	/* GPP 12 */  				interrupt-parent = <&PIC>;  				reg = <2>; @@ -174,7 +171,6 @@  		};  		MPSC0: mpsc@8000 { -			device_type = "serial";  			compatible = "marvell,mv64360-mpsc";  			reg = <0x8000 0x38>;  			virtual-reg = <0xd8008000>; @@ -189,7 +185,6 @@  		};  		MPSC1: mpsc@9000 { -			device_type = "serial";  			compatible = "marvell,mv64360-mpsc";  			reg = <0x9000 0x38>;  			virtual-reg = <0xd8009000>; diff --git a/arch/powerpc/boot/dts/ep8248e.dts b/arch/powerpc/boot/dts/ep8248e.dts index 756758fb5b7..8b3a49f34f5 100644 --- a/arch/powerpc/boot/dts/ep8248e.dts +++ b/arch/powerpc/boot/dts/ep8248e.dts @@ -67,7 +67,6 @@  			ranges;  			mdio { -				device_type = "mdio";  				compatible = "fsl,ep8248e-mdio-bitbang";  				#address-cells = <1>;  				#size-cells = <0>; @@ -76,13 +75,11 @@  				PHY0: ethernet-phy@0 {  					interrupt-parent = <&PIC>;  					reg = <0>; -					device_type = "ethernet-phy";  				};  				PHY1: ethernet-phy@1 {  					interrupt-parent = <&PIC>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  			};  		}; diff --git a/arch/powerpc/boot/dts/ep88xc.dts b/arch/powerpc/boot/dts/ep88xc.dts index ae57d624012..2aa5bf55964 100644 --- a/arch/powerpc/boot/dts/ep88xc.dts +++ b/arch/powerpc/boot/dts/ep88xc.dts @@ -85,12 +85,10 @@  			PHY0: ethernet-phy@0 {  				reg = <0x0>; -				device_type = "ethernet-phy";  			};  			PHY1: ethernet-phy@1 {  				reg = <0x1>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi index 5a6615d0ade..d67894459ac 100644 --- a/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/b4420si-post.dtsi @@ -76,16 +76,48 @@  		compatible = "fsl,b4420-l3-cache-controller", "cache";  	}; -	corenet-cf@18000 { -		compatible = "fsl,b4420-corenet-cf"; -	}; -  	guts: global-utilities@e0000 {  		compatible = "fsl,b4420-device-config", "fsl,qoriq-device-config-2.0";  	};  	clockgen: global-utilities@e1000 {  		compatible = "fsl,b4420-clockgen", "fsl,qoriq-clockgen-2.0"; +		ranges = <0x0 0xe1000 0x1000>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-2.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2", "pll0-div4"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2", "pll1-div4"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				<&pll1 0>, <&pll1 1>, <&pll1 2>; +			clock-names = "pll0", "pll0-div2", "pll0-div4", +				"pll1", "pll1-div2", "pll1-div4"; +			clock-output-names = "cmux0"; +		};  	};  	rcpm: global-utilities@e2000 { diff --git a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi index 7b4426e0a5a..338af7e39dd 100644 --- a/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi @@ -34,6 +34,8 @@  /dts-v1/; +/include/ "e6500_power_isa.dtsi" +  / {  	compatible = "fsl,B4420";  	#address-cells = <2>; @@ -62,12 +64,16 @@  		cpu0: PowerPC,e6500@0 {  			device_type = "cpu";  			reg = <0 1>; +			clocks = <&mux0>;  			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu1: PowerPC,e6500@2 {  			device_type = "cpu";  			reg = <2 3>; +			clocks = <&mux0>;  			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>;  		};  	};  }; diff --git a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi index e5cf6c81dd6..582381dba1d 100644 --- a/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/b4860si-post.dtsi @@ -41,7 +41,7 @@  &rio {  	compatible = "fsl,srio"; -	interrupts = <16 2 1 11>; +	interrupts = <16 2 1 20>;  	#address-cells = <2>;  	#size-cells = <2>;  	fsl,iommu-parent = <&pamu0>; @@ -120,16 +120,48 @@  		compatible = "fsl,b4860-l3-cache-controller", "cache";  	}; -	corenet-cf@18000 { -		compatible = "fsl,b4860-corenet-cf"; -	}; -  	guts: global-utilities@e0000 {  		compatible = "fsl,b4860-device-config", "fsl,qoriq-device-config-2.0";  	};  	clockgen: global-utilities@e1000 {  		compatible = "fsl,b4860-clockgen", "fsl,qoriq-clockgen-2.0"; +		ranges = <0x0 0xe1000 0x1000>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-2.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2", "pll0-div4"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2", "pll1-div4"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				<&pll1 0>, <&pll1 1>, <&pll1 2>; +			clock-names = "pll0", "pll0-div2", "pll0-div4", +				"pll1", "pll1-div2", "pll1-div4"; +			clock-output-names = "cmux0"; +		};  	};  	rcpm: global-utilities@e2000 { diff --git a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi index 5263fa46a3f..1948f73fd26 100644 --- a/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi @@ -34,6 +34,8 @@  /dts-v1/; +/include/ "e6500_power_isa.dtsi" +  / {  	compatible = "fsl,B4860";  	#address-cells = <2>; @@ -62,22 +64,30 @@  		cpu0: PowerPC,e6500@0 {  			device_type = "cpu";  			reg = <0 1>; +			clocks = <&mux0>;  			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu1: PowerPC,e6500@2 {  			device_type = "cpu";  			reg = <2 3>; +			clocks = <&mux0>;  			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu2: PowerPC,e6500@4 {  			device_type = "cpu";  			reg = <4 5>; +			clocks = <&mux0>;  			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu3: PowerPC,e6500@6 {  			device_type = "cpu";  			reg = <6 7>; +			clocks = <&mux0>;  			next-level-cache = <&L2>; +			fsl,portid-mapping = <0x80000000>;  		};  	};  }; diff --git a/arch/powerpc/boot/dts/fsl/b4si-post.dtsi b/arch/powerpc/boot/dts/fsl/b4si-post.dtsi index 4c617bf8cdb..1a54ba71f68 100644 --- a/arch/powerpc/boot/dts/fsl/b4si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/b4si-post.dtsi @@ -158,7 +158,7 @@  	};  	corenet-cf@18000 { -		compatible = "fsl,b4-corenet-cf"; +		compatible = "fsl,corenet2-cf", "fsl,corenet-cf";  		reg = <0x18000 0x1000>;  		interrupts = <16 2 1 0>;  		fsl,ccf-num-csdids = <32>; @@ -168,6 +168,7 @@  	iommu@20000 {  		compatible =  "fsl,pamu-v1.0", "fsl,pamu";  		reg = <0x20000 0x4000>; +		fsl,portid-mapping = <0x8000>;  		#address-cells = <1>;  		#size-cells = <1>;  		interrupts = < @@ -223,13 +224,13 @@  		reg = <0xe2000 0x1000>;  	}; -/include/ "qoriq-dma-0.dtsi" +/include/ "elo3-dma-0.dtsi"  	dma@100300 {  		fsl,iommu-parent = <&pamu0>;  		fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */  	}; -/include/ "qoriq-dma-1.dtsi" +/include/ "elo3-dma-1.dtsi"  	dma@101300 {  		fsl,iommu-parent = <&pamu0>;  		fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ diff --git a/arch/powerpc/boot/dts/fsl/bsc9131si-post.dtsi b/arch/powerpc/boot/dts/fsl/bsc9131si-post.dtsi index 5180d9d3798..0c0efa94cfb 100644 --- a/arch/powerpc/boot/dts/fsl/bsc9131si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/bsc9131si-post.dtsi @@ -130,7 +130,7 @@ usb@22000 {  /include/ "pq3-esdhc-0.dtsi"  	sdhc@2e000 { -		fsl,sdhci-auto-cmd12; +		sdhci,auto-cmd12;  		interrupts = <41 0x2 0 0>;  	}; diff --git a/arch/powerpc/boot/dts/fsl/bsc9131si-pre.dtsi b/arch/powerpc/boot/dts/fsl/bsc9131si-pre.dtsi index 743e4aeda34..f6ec4a67560 100644 --- a/arch/powerpc/boot/dts/fsl/bsc9131si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/bsc9131si-pre.dtsi @@ -33,6 +33,9 @@   */  /dts-v1/; + +/include/ "e500v2_power_isa.dtsi" +  / {  	compatible = "fsl,BSC9131";  	#address-cells = <2>; diff --git a/arch/powerpc/boot/dts/fsl/bsc9132si-post.dtsi b/arch/powerpc/boot/dts/fsl/bsc9132si-post.dtsi new file mode 100644 index 00000000000..c7230719814 --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/bsc9132si-post.dtsi @@ -0,0 +1,185 @@ +/* + * BSC9132 Silicon/SoC Device Tree Source (post include) + * + * Copyright 2014 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +&ifc { +	#address-cells = <2>; +	#size-cells = <1>; +	compatible = "fsl,ifc", "simple-bus"; +	/* FIXME: Test whether interrupts are split */ +	interrupts = <16 2 0 0 20 2 0 0>; +}; + +&soc { +	#address-cells = <1>; +	#size-cells = <1>; +	device_type = "soc"; +	compatible = "fsl,bsc9132-immr", "simple-bus"; +	bus-frequency = <0>;		// Filled out by uboot. + +	ecm-law@0 { +		compatible = "fsl,ecm-law"; +		reg = <0x0 0x1000>; +		fsl,num-laws = <12>; +	}; + +	ecm@1000 { +		compatible = "fsl,bsc9132-ecm", "fsl,ecm"; +		reg = <0x1000 0x1000>; +		interrupts = <16 2 0 0>; +	}; + +	memory-controller@2000 { +		compatible = "fsl,bsc9132-memory-controller"; +		reg = <0x2000 0x1000>; +		interrupts = <16 2 1 8>; +	}; + +/include/ "pq3-i2c-0.dtsi" +	i2c@3000 { +		interrupts = <17 2 0 0>; +	}; + +/include/ "pq3-i2c-1.dtsi" +	i2c@3100 { +		interrupts = <17 2 0 0>; +	}; + +/include/ "pq3-duart-0.dtsi" +	serial0: serial@4500 { +		interrupts = <18 2 0 0>; +	}; + +	serial1: serial@4600 { +		interrupts = <18 2 0 0 >; +	}; +/include/ "pq3-espi-0.dtsi" +	spi0: spi@7000 { +		fsl,espi-num-chipselects = <1>; +		interrupts = <22 0x2 0 0>; +	}; + +/include/ "pq3-gpio-0.dtsi" +	gpio-controller@f000 { +		interrupts = <19 0x2 0 0>; +		}; + +	L2: l2-cache-controller@20000 { +		compatible = "fsl,bsc9132-l2-cache-controller"; +		reg = <0x20000 0x1000>; +		cache-line-size = <32>;	// 32 bytes +		cache-size = <0x40000>; // L2,256K +		interrupts = <16 2 1 0>; +	}; + +/include/ "pq3-dma-0.dtsi" + +dma@21300 { + +	dma-channel@0 { +		interrupts = <62 2 0 0>; +	}; + +	dma-channel@80 { +		interrupts = <63 2 0 0>; +	}; + +	dma-channel@100 { +		interrupts = <64 2 0 0>; +	}; + +	dma-channel@180 { +		interrupts = <65 2 0 0>; +	}; +}; + +/include/ "pq3-usb2-dr-0.dtsi" +usb@22000 { +	compatible = "fsl-usb2-dr","fsl-usb2-dr-v2.2"; +	interrupts = <40 0x2 0 0>; +}; + +/include/ "pq3-esdhc-0.dtsi" +	sdhc@2e000 { +		fsl,sdhci-auto-cmd12; +		interrupts = <41 0x2 0 0>; +	}; + +/include/ "pq3-sec4.4-0.dtsi" +crypto@30000 { +	interrupts	 = <57 2 0 0>; + +	sec_jr0: jr@1000 { +		interrupts	 = <58 2 0 0>; +	}; + +	sec_jr1: jr@2000 { +		interrupts	 = <59 2 0 0>; +	}; + +	sec_jr2: jr@3000 { +		interrupts	 = <60 2 0 0>; +	}; + +	sec_jr3: jr@4000 { +		interrupts	 = <61 2 0 0>; +	}; +}; + +/include/ "pq3-mpic.dtsi" +/include/ "pq3-mpic-timer-B.dtsi" + +/include/ "pq3-etsec2-0.dtsi" +enet0: ethernet@b0000 { +	queue-group@b0000 { +		fsl,rx-bit-map = <0xff>; +		fsl,tx-bit-map = <0xff>; +		interrupts = <26 2 0 0 27 2 0 0 28 2 0 0>; +	}; +}; + +/include/ "pq3-etsec2-1.dtsi" +enet1: ethernet@b1000 { +	queue-group@b1000 { +		fsl,rx-bit-map = <0xff>; +		fsl,tx-bit-map = <0xff>; +		interrupts = <33 2 0 0 34 2 0 0 35 2 0 0>; +	}; +}; + +global-utilities@e0000 { +		compatible = "fsl,bsc9132-guts"; +		reg = <0xe0000 0x1000>; +		fsl,has-rstcr; +	}; +}; diff --git a/arch/powerpc/boot/dts/fsl/bsc9132si-pre.dtsi b/arch/powerpc/boot/dts/fsl/bsc9132si-pre.dtsi new file mode 100644 index 00000000000..301a9dba579 --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/bsc9132si-pre.dtsi @@ -0,0 +1,66 @@ +/* + * BSC9132 Silicon/SoC Device Tree Source (pre include) + * + * Copyright 2014 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/dts-v1/; + +/include/ "e500v2_power_isa.dtsi" + +/ { +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	aliases { +		serial0 = &serial0; +		ethernet0 = &enet0; +		ethernet1 = &enet1; +	}; + +	cpus { +		#address-cells = <1>; +		#size-cells = <0>; + +		cpu0: PowerPC,e500v2@0 { +			device_type = "cpu"; +			reg = <0x0>; +			next-level-cache = <&L2>; +		}; + +		cpu1: PowerPC,e500v2@1 { +			device_type = "cpu"; +			reg = <0x1>; +			next-level-cache = <&L2>; +		}; +	}; +}; diff --git a/arch/powerpc/boot/dts/fsl/elo3-dma-0.dtsi b/arch/powerpc/boot/dts/fsl/elo3-dma-0.dtsi new file mode 100644 index 00000000000..3c210e0d520 --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/elo3-dma-0.dtsi @@ -0,0 +1,82 @@ +/* + * QorIQ Elo3 DMA device tree stub [ controller @ offset 0x100000 ] + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +dma0: dma@100300 { +	#address-cells = <1>; +	#size-cells = <1>; +	compatible = "fsl,elo3-dma"; +	reg = <0x100300 0x4>, +	      <0x100600 0x4>; +	ranges = <0x0 0x100100 0x500>; +	dma-channel@0 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x0 0x80>; +		interrupts = <28 2 0 0>; +	}; +	dma-channel@80 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x80 0x80>; +		interrupts = <29 2 0 0>; +	}; +	dma-channel@100 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x100 0x80>; +		interrupts = <30 2 0 0>; +	}; +	dma-channel@180 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x180 0x80>; +		interrupts = <31 2 0 0>; +	}; +	dma-channel@300 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x300 0x80>; +		interrupts = <76 2 0 0>; +	}; +	dma-channel@380 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x380 0x80>; +		interrupts = <77 2 0 0>; +	}; +	dma-channel@400 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x400 0x80>; +		interrupts = <78 2 0 0>; +	}; +	dma-channel@480 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x480 0x80>; +		interrupts = <79 2 0 0>; +	}; +}; diff --git a/arch/powerpc/boot/dts/fsl/elo3-dma-1.dtsi b/arch/powerpc/boot/dts/fsl/elo3-dma-1.dtsi new file mode 100644 index 00000000000..cccf3bb3822 --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/elo3-dma-1.dtsi @@ -0,0 +1,82 @@ +/* + * QorIQ Elo3 DMA device tree stub [ controller @ offset 0x101000 ] + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +dma1: dma@101300 { +	#address-cells = <1>; +	#size-cells = <1>; +	compatible = "fsl,elo3-dma"; +	reg = <0x101300 0x4>, +	      <0x101600 0x4>; +	ranges = <0x0 0x101100 0x500>; +	dma-channel@0 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x0 0x80>; +		interrupts = <32 2 0 0>; +	}; +	dma-channel@80 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x80 0x80>; +		interrupts = <33 2 0 0>; +	}; +	dma-channel@100 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x100 0x80>; +		interrupts = <34 2 0 0>; +	}; +	dma-channel@180 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x180 0x80>; +		interrupts = <35 2 0 0>; +	}; +	dma-channel@300 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x300 0x80>; +		interrupts = <80 2 0 0>; +	}; +	dma-channel@380 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x380 0x80>; +		interrupts = <81 2 0 0>; +	}; +	dma-channel@400 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x400 0x80>; +		interrupts = <82 2 0 0>; +	}; +	dma-channel@480 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x480 0x80>; +		interrupts = <83 2 0 0>; +	}; +}; diff --git a/arch/powerpc/boot/dts/fsl/elo3-dma-2.dtsi b/arch/powerpc/boot/dts/fsl/elo3-dma-2.dtsi new file mode 100644 index 00000000000..d3cc8d0f7c2 --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/elo3-dma-2.dtsi @@ -0,0 +1,82 @@ +/* + * QorIQ Elo3 DMA device tree stub [ controller @ offset 0x102300 ] + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +dma2: dma@102300 { +	#address-cells = <1>; +	#size-cells = <1>; +	compatible = "fsl,elo3-dma"; +	reg = <0x102300 0x4>, +	      <0x102600 0x4>; +	ranges = <0x0 0x102100 0x500>; +	dma-channel@0 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x0 0x80>; +		interrupts = <464 2 0 0>; +	}; +	dma-channel@80 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x80 0x80>; +		interrupts = <465 2 0 0>; +	}; +	dma-channel@100 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x100 0x80>; +		interrupts = <466 2 0 0>; +	}; +	dma-channel@180 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x180 0x80>; +		interrupts = <467 2 0 0>; +	}; +	dma-channel@300 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x300 0x80>; +		interrupts = <468 2 0 0>; +	}; +	dma-channel@380 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x380 0x80>; +		interrupts = <469 2 0 0>; +	}; +	dma-channel@400 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x400 0x80>; +		interrupts = <470 2 0 0>; +	}; +	dma-channel@480 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x480 0x80>; +		interrupts = <471 2 0 0>; +	}; +}; diff --git a/arch/powerpc/boot/dts/fsl/p1020si-post.dtsi b/arch/powerpc/boot/dts/fsl/p1020si-post.dtsi index 68cc5e7f647..642dc3a83d0 100644 --- a/arch/powerpc/boot/dts/fsl/p1020si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p1020si-post.dtsi @@ -36,7 +36,8 @@  	#address-cells = <2>;  	#size-cells = <1>;  	compatible = "fsl,p1020-elbc", "fsl,elbc", "simple-bus"; -	interrupts = <19 2 0 0>; +	interrupts = <19 2 0 0>, +		     <16 2 0 0>;  };  /* controller at 0x9000 */ diff --git a/arch/powerpc/boot/dts/fsl/p1021si-post.dtsi b/arch/powerpc/boot/dts/fsl/p1021si-post.dtsi index adb82fd9057..407cb5fd0f5 100644 --- a/arch/powerpc/boot/dts/fsl/p1021si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p1021si-post.dtsi @@ -36,7 +36,8 @@  	#address-cells = <2>;  	#size-cells = <1>;  	compatible = "fsl,p1021-elbc", "fsl,elbc", "simple-bus"; -	interrupts = <19 2 0 0>; +	interrupts = <19 2 0 0>, +		     <16 2 0 0>;  };  /* controller at 0x9000 */ diff --git a/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi b/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi index e179803a81e..ebf20223454 100644 --- a/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p1022si-post.dtsi @@ -40,7 +40,8 @@  	 * pin muxing when the DIU is enabled.  	 */  	compatible = "fsl,p1022-elbc", "fsl,elbc"; -	interrupts = <19 2 0 0>; +	interrupts = <19 2 0 0>, +		     <16 2 0 0>;  };  /* controller at 0x9000 */ diff --git a/arch/powerpc/boot/dts/fsl/p1023si-post.dtsi b/arch/powerpc/boot/dts/fsl/p1023si-post.dtsi index f1105bffa91..81437fdf1db 100644 --- a/arch/powerpc/boot/dts/fsl/p1023si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p1023si-post.dtsi @@ -36,7 +36,8 @@  	#address-cells = <2>;  	#size-cells = <1>;  	compatible = "fsl,p1023-elbc", "fsl,elbc", "simple-bus"; -	interrupts = <19 2 0 0>; +	interrupts = <19 2 0 0>, +		     <16 2 0 0>;  };  /* controller at 0xa000 */ diff --git a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi index dc6cc5afd18..5290df83ff3 100644 --- a/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p2041si-post.dtsi @@ -246,7 +246,7 @@  	};  	corenet-cf@18000 { -		compatible = "fsl,corenet-cf"; +		compatible = "fsl,corenet1-cf", "fsl,corenet-cf";  		reg = <0x18000 0x1000>;  		interrupts = <16 2 1 31>;  		fsl,ccf-num-csdids = <32>; @@ -262,6 +262,7 @@  		interrupts = <  			24 2 0 0  			16 2 1 30>; +		fsl,portid-mapping = <0x0f000000>;  		pamu0: pamu@0 {  			reg = <0 0x1000>; @@ -306,8 +307,68 @@  	clockgen: global-utilities@e1000 {  		compatible = "fsl,p2041-clockgen", "fsl,qoriq-clockgen-1.0"; +		ranges = <0x0 0xe1000 0x1000>;  		reg = <0xe1000 0x1000>;  		clock-frequency = <0>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-1.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux1"; +		}; + +		mux2: mux2@40 { +			#clock-cells = <0>; +			reg = <0x40 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +		}; + +		mux3: mux3@60 { +			#clock-cells = <0>; +			reg = <0x60 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux3"; +		};  	};  	rcpm: global-utilities@e2000 { diff --git a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi index 7a2697d0454..b1ea147f299 100644 --- a/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/p2041si-pre.dtsi @@ -81,7 +81,9 @@  		cpu0: PowerPC,e500mc@0 {  			device_type = "cpu";  			reg = <0>; +			clocks = <&mux0>;  			next-level-cache = <&L2_0>; +			fsl,portid-mapping = <0x80000000>;  			L2_0: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -89,7 +91,9 @@  		cpu1: PowerPC,e500mc@1 {  			device_type = "cpu";  			reg = <1>; +			clocks = <&mux1>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x40000000>;  			L2_1: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -97,7 +101,9 @@  		cpu2: PowerPC,e500mc@2 {  			device_type = "cpu";  			reg = <2>; +			clocks = <&mux2>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x20000000>;  			L2_2: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -105,7 +111,9 @@  		cpu3: PowerPC,e500mc@3 {  			device_type = "cpu";  			reg = <3>; +			clocks = <&mux3>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x10000000>;  			L2_3: l2-cache {  				next-level-cache = <&cpc>;  			}; diff --git a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi index 3fa1e22d544..cd63cb1b104 100644 --- a/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p3041si-post.dtsi @@ -273,7 +273,7 @@  	};  	corenet-cf@18000 { -		compatible = "fsl,corenet-cf"; +		compatible = "fsl,corenet1-cf", "fsl,corenet-cf";  		reg = <0x18000 0x1000>;  		interrupts = <16 2 1 31>;  		fsl,ccf-num-csdids = <32>; @@ -289,6 +289,7 @@  		interrupts = <  			24 2 0 0  			16 2 1 30>; +		fsl,portid-mapping = <0x0f000000>;  		pamu0: pamu@0 {  			reg = <0 0x1000>; @@ -333,8 +334,69 @@  	clockgen: global-utilities@e1000 {  		compatible = "fsl,p3041-clockgen", "fsl,qoriq-clockgen-1.0"; +		ranges = <0x0 0xe1000 0x1000>;  		reg = <0xe1000 0x1000>;  		clock-frequency = <0>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-1.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux1"; +		}; + +		mux2: mux2@40 { +			#clock-cells = <0>; +			reg = <0x40 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux2"; +		}; + +		mux3: mux3@60 { +			#clock-cells = <0>; +			reg = <0x60 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux3"; +		};  	};  	rcpm: global-utilities@e2000 { diff --git a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi index c9ca2c305cf..dc5f4b362c2 100644 --- a/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/p3041si-pre.dtsi @@ -82,7 +82,9 @@  		cpu0: PowerPC,e500mc@0 {  			device_type = "cpu";  			reg = <0>; +			clocks = <&mux0>;  			next-level-cache = <&L2_0>; +			fsl,portid-mapping = <0x80000000>;  			L2_0: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -90,7 +92,9 @@  		cpu1: PowerPC,e500mc@1 {  			device_type = "cpu";  			reg = <1>; +			clocks = <&mux1>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x40000000>;  			L2_1: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -98,7 +102,9 @@  		cpu2: PowerPC,e500mc@2 {  			device_type = "cpu";  			reg = <2>; +			clocks = <&mux2>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x20000000>;  			L2_2: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -106,7 +112,9 @@  		cpu3: PowerPC,e500mc@3 {  			device_type = "cpu";  			reg = <3>; +			clocks = <&mux3>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x10000000>;  			L2_3: l2-cache {  				next-level-cache = <&cpc>;  			}; diff --git a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi index 34769a7eafe..12947ccddf2 100644 --- a/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p4080si-post.dtsi @@ -281,7 +281,7 @@  	};  	corenet-cf@18000 { -		compatible = "fsl,corenet-cf"; +		compatible = "fsl,corenet1-cf", "fsl,corenet-cf";  		reg = <0x18000 0x1000>;  		interrupts = <16 2 1 31>;  		fsl,ccf-num-csdids = <32>; @@ -297,6 +297,7 @@  		interrupts = <  			24 2 0 0  			16 2 1 30>; +		fsl,portid-mapping = <0x00f80000>;  		pamu0: pamu@0 {  			reg = <0 0x1000>; @@ -353,8 +354,121 @@  	clockgen: global-utilities@e1000 {  		compatible = "fsl,p4080-clockgen", "fsl,qoriq-clockgen-1.0"; +		ranges = <0x0 0xe1000 0x1000>;  		reg = <0xe1000 0x1000>;  		clock-frequency = <0>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-1.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2"; +		}; + +		pll2: pll2@840 { +			#clock-cells = <1>; +			reg = <0x840 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll2", "pll2-div2"; +		}; + +		pll3: pll3@860 { +			#clock-cells = <1>; +			reg = <0x860 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll3", "pll3-div2"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux1"; +		}; + +		mux2: mux2@40 { +			#clock-cells = <0>; +			reg = <0x40 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux2"; +		}; + +		mux3: mux3@60 { +			#clock-cells = <0>; +			reg = <0x60 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux3"; +		}; + +		mux4: mux4@80 { +			#clock-cells = <0>; +			reg = <0x80 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>; +			clock-names = "pll2", "pll2-div2", "pll3", "pll3-div2"; +			clock-output-names = "cmux4"; +		}; + +		mux5: mux5@a0 { +			#clock-cells = <0>; +			reg = <0xa0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>; +			clock-names = "pll2", "pll2-div2", "pll3", "pll3-div2"; +			clock-output-names = "cmux5"; +		}; + +		mux6: mux6@c0 { +			#clock-cells = <0>; +			reg = <0xc0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>; +			clock-names = "pll2", "pll2-div2", "pll3", "pll3-div2"; +			clock-output-names = "cmux6"; +		}; + +		mux7: mux7@e0 { +			#clock-cells = <0>; +			reg = <0xe0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll2 0>, <&pll2 1>, <&pll3 0>, <&pll3 1>; +			clock-names = "pll2", "pll2-div2", "pll3", "pll3-div2"; +			clock-output-names = "cmux7"; +		};  	};  	rcpm: global-utilities@e2000 { diff --git a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi index 493d9a056b5..38bde095867 100644 --- a/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/p4080si-pre.dtsi @@ -81,7 +81,9 @@  		cpu0: PowerPC,e500mc@0 {  			device_type = "cpu";  			reg = <0>; +			clocks = <&mux0>;  			next-level-cache = <&L2_0>; +			fsl,portid-mapping = <0x80000000>;  			L2_0: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -89,7 +91,9 @@  		cpu1: PowerPC,e500mc@1 {  			device_type = "cpu";  			reg = <1>; +			clocks = <&mux1>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x40000000>;  			L2_1: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -97,7 +101,9 @@  		cpu2: PowerPC,e500mc@2 {  			device_type = "cpu";  			reg = <2>; +			clocks = <&mux2>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x20000000>;  			L2_2: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -105,7 +111,9 @@  		cpu3: PowerPC,e500mc@3 {  			device_type = "cpu";  			reg = <3>; +			clocks = <&mux3>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x10000000>;  			L2_3: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -113,7 +121,9 @@  		cpu4: PowerPC,e500mc@4 {  			device_type = "cpu";  			reg = <4>; +			clocks = <&mux4>;  			next-level-cache = <&L2_4>; +			fsl,portid-mapping = <0x08000000>;  			L2_4: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -121,7 +131,9 @@  		cpu5: PowerPC,e500mc@5 {  			device_type = "cpu";  			reg = <5>; +			clocks = <&mux5>;  			next-level-cache = <&L2_5>; +			fsl,portid-mapping = <0x04000000>;  			L2_5: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -129,7 +141,9 @@  		cpu6: PowerPC,e500mc@6 {  			device_type = "cpu";  			reg = <6>; +			clocks = <&mux6>;  			next-level-cache = <&L2_6>; +			fsl,portid-mapping = <0x02000000>;  			L2_6: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -137,7 +151,9 @@  		cpu7: PowerPC,e500mc@7 {  			device_type = "cpu";  			reg = <7>; +			clocks = <&mux7>;  			next-level-cache = <&L2_7>; +			fsl,portid-mapping = <0x01000000>;  			L2_7: l2-cache {  				next-level-cache = <&cpc>;  			}; diff --git a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi index bc3ae5a2252..4c4a2b0436b 100644 --- a/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p5020si-post.dtsi @@ -278,7 +278,7 @@  	};  	corenet-cf@18000 { -		compatible = "fsl,corenet-cf"; +		compatible = "fsl,corenet1-cf", "fsl,corenet-cf";  		reg = <0x18000 0x1000>;  		interrupts = <16 2 1 31>;  		fsl,ccf-num-csdids = <32>; @@ -294,6 +294,7 @@  		interrupts = <  			24 2 0 0  			16 2 1 30>; +		fsl,portid-mapping = <0x3c000000>;  		pamu0: pamu@0 {  			reg = <0 0x1000>; @@ -338,8 +339,51 @@  	clockgen: global-utilities@e1000 {  		compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0"; +		ranges = <0x0 0xe1000 0x1000>;  		reg = <0xe1000 0x1000>;  		clock-frequency = <0>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-1.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux1"; +		};  	};  	rcpm: global-utilities@e2000 { diff --git a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi index 8df47fc45ab..1cc61e126e4 100644 --- a/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/p5020si-pre.dtsi @@ -88,7 +88,9 @@  		cpu0: PowerPC,e5500@0 {  			device_type = "cpu";  			reg = <0>; +			clocks = <&mux0>;  			next-level-cache = <&L2_0>; +			fsl,portid-mapping = <0x80000000>;  			L2_0: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -96,7 +98,9 @@  		cpu1: PowerPC,e5500@1 {  			device_type = "cpu";  			reg = <1>; +			clocks = <&mux1>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x40000000>;  			L2_1: l2-cache {  				next-level-cache = <&cpc>;  			}; diff --git a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi index a91897f6af0..67296fdd969 100644 --- a/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/p5040si-post.dtsi @@ -233,7 +233,7 @@  	};  	corenet-cf@18000 { -		compatible = "fsl,corenet-cf"; +		compatible = "fsl,corenet1-cf", "fsl,corenet-cf";  		reg = <0x18000 0x1000>;  		interrupts = <16 2 1 31>;  		fsl,ccf-num-csdids = <32>; @@ -248,6 +248,7 @@  		#size-cells = <1>;  		interrupts = <24 2 0 0  			      16 2 1 30>; +		fsl,portid-mapping = <0x0f800000>;  		pamu0: pamu@0 {  			reg = <0 0x1000>; @@ -298,8 +299,69 @@  	clockgen: global-utilities@e1000 {  		compatible = "fsl,p5040-clockgen", "fsl,qoriq-clockgen-1.0"; +		ranges = <0x0 0xe1000 0x1000>;  		reg = <0xe1000 0x1000>;  		clock-frequency = <0>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-1.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux1"; +		}; + +		mux2: mux2@40 { +			#clock-cells = <0>; +			reg = <0x40 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux2"; +		}; + +		mux3: mux3@60 { +			#clock-cells = <0>; +			reg = <0x60 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux3"; +		};  	};  	rcpm: global-utilities@e2000 { diff --git a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi index 40ca943f5d1..b048a2be05a 100644 --- a/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/p5040si-pre.dtsi @@ -81,7 +81,9 @@  		cpu0: PowerPC,e5500@0 {  			device_type = "cpu";  			reg = <0>; +			clocks = <&mux0>;  			next-level-cache = <&L2_0>; +			fsl,portid-mapping = <0x80000000>;  			L2_0: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -89,7 +91,9 @@  		cpu1: PowerPC,e5500@1 {  			device_type = "cpu";  			reg = <1>; +			clocks = <&mux1>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x40000000>;  			L2_1: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -97,7 +101,9 @@  		cpu2: PowerPC,e5500@2 {  			device_type = "cpu";  			reg = <2>; +			clocks = <&mux2>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x20000000>;  			L2_2: l2-cache {  				next-level-cache = <&cpc>;  			}; @@ -105,7 +111,9 @@  		cpu3: PowerPC,e5500@3 {  			device_type = "cpu";  			reg = <3>; +			clocks = <&mux3>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x10000000>;  			L2_3: l2-cache {  				next-level-cache = <&cpc>;  			}; diff --git a/arch/powerpc/boot/dts/fsl/t1040si-post.dtsi b/arch/powerpc/boot/dts/fsl/t1040si-post.dtsi new file mode 100644 index 00000000000..12e597eea3c --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/t1040si-post.dtsi @@ -0,0 +1,430 @@ +/* + * T1040 Silicon/SoC Device Tree Source (post include) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *	 notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *	 notice, this list of conditions and the following disclaimer in the + *	 documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *	 names of its contributors may be used to endorse or promote products + *	 derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +&ifc { +	#address-cells = <2>; +	#size-cells = <1>; +	compatible = "fsl,ifc", "simple-bus"; +	interrupts = <25 2 0 0>; +}; + +&pci0 { +	compatible = "fsl,t1040-pcie", "fsl,qoriq-pcie-v2.4", "fsl,qoriq-pcie"; +	device_type = "pci"; +	#size-cells = <2>; +	#address-cells = <3>; +	bus-range = <0x0 0xff>; +	interrupts = <20 2 0 0>; +	fsl,iommu-parent = <&pamu0>; +	pcie@0 { +		reg = <0 0 0 0 0>; +		#interrupt-cells = <1>; +		#size-cells = <2>; +		#address-cells = <3>; +		device_type = "pci"; +		interrupts = <20 2 0 0>; +		interrupt-map-mask = <0xf800 0 0 7>; +		interrupt-map = < +			/* IDSEL 0x0 */ +			0000 0 0 1 &mpic 40 1 0 0 +			0000 0 0 2 &mpic 1 1 0 0 +			0000 0 0 3 &mpic 2 1 0 0 +			0000 0 0 4 &mpic 3 1 0 0 +			>; +	}; +}; + +&pci1 { +	compatible = "fsl,t1040-pcie", "fsl,qoriq-pcie-v2.4", "fsl,qoriq-pcie"; +	device_type = "pci"; +	#size-cells = <2>; +	#address-cells = <3>; +	bus-range = <0 0xff>; +	interrupts = <21 2 0 0>; +	fsl,iommu-parent = <&pamu0>; +	pcie@0 { +		reg = <0 0 0 0 0>; +		#interrupt-cells = <1>; +		#size-cells = <2>; +		#address-cells = <3>; +		device_type = "pci"; +		interrupts = <21 2 0 0>; +		interrupt-map-mask = <0xf800 0 0 7>; +		interrupt-map = < +			/* IDSEL 0x0 */ +			0000 0 0 1 &mpic 41 1 0 0 +			0000 0 0 2 &mpic 5 1 0 0 +			0000 0 0 3 &mpic 6 1 0 0 +			0000 0 0 4 &mpic 7 1 0 0 +			>; +	}; +}; + +&pci2 { +	compatible = "fsl,t1040-pcie", "fsl,qoriq-pcie-v2.4", "fsl,qoriq-pcie"; +	device_type = "pci"; +	#size-cells = <2>; +	#address-cells = <3>; +	bus-range = <0x0 0xff>; +	interrupts = <22 2 0 0>; +	fsl,iommu-parent = <&pamu0>; +	pcie@0 { +		reg = <0 0 0 0 0>; +		#interrupt-cells = <1>; +		#size-cells = <2>; +		#address-cells = <3>; +		device_type = "pci"; +		interrupts = <22 2 0 0>; +		interrupt-map-mask = <0xf800 0 0 7>; +		interrupt-map = < +			/* IDSEL 0x0 */ +			0000 0 0 1 &mpic 42 1 0 0 +			0000 0 0 2 &mpic 9 1 0 0 +			0000 0 0 3 &mpic 10 1 0 0 +			0000 0 0 4 &mpic 11 1 0 0 +			>; +	}; +}; + +&pci3 { +	compatible = "fsl,t1040-pcie", "fsl,qoriq-pcie-v2.4", "fsl,qoriq-pcie"; +	device_type = "pci"; +	#size-cells = <2>; +	#address-cells = <3>; +	bus-range = <0x0 0xff>; +	interrupts = <23 2 0 0>; +	fsl,iommu-parent = <&pamu0>; +	pcie@0 { +		reg = <0 0 0 0 0>; +		#interrupt-cells = <1>; +		#size-cells = <2>; +		#address-cells = <3>; +		device_type = "pci"; +		interrupts = <23 2 0 0>; +		interrupt-map-mask = <0xf800 0 0 7>; +		interrupt-map = < +			/* IDSEL 0x0 */ +			0000 0 0 1 &mpic 43 1 0 0 +			0000 0 0 2 &mpic 0 1 0 0 +			0000 0 0 3 &mpic 4 1 0 0 +			0000 0 0 4 &mpic 8 1 0 0 +			>; +	}; +}; + +&dcsr { +	#address-cells = <1>; +	#size-cells = <1>; +	compatible = "fsl,dcsr", "simple-bus"; + +	dcsr-epu@0 { +		compatible = "fsl,t1040-dcsr-epu", "fsl,dcsr-epu"; +		interrupts = <52 2 0 0 +			      84 2 0 0 +			      85 2 0 0>; +		reg = <0x0 0x1000>; +	}; +	dcsr-npc { +		compatible = "fsl,t1040-dcsr-cnpc", "fsl,dcsr-cnpc"; +		reg = <0x1000 0x1000 0x1002000 0x10000>; +	}; +	dcsr-nxc@2000 { +		compatible = "fsl,dcsr-nxc"; +		reg = <0x2000 0x1000>; +	}; +	dcsr-corenet { +		compatible = "fsl,dcsr-corenet"; +		reg = <0x8000 0x1000 0x1A000 0x1000>; +	}; +	dcsr-dpaa@9000 { +		compatible = "fsl,t1040-dcsr-dpaa", "fsl,dcsr-dpaa"; +		reg = <0x9000 0x1000>; +	}; +	dcsr-ocn@11000 { +		compatible = "fsl,t1040-dcsr-ocn", "fsl,dcsr-ocn"; +		reg = <0x11000 0x1000>; +	}; +	dcsr-ddr@12000 { +		compatible = "fsl,dcsr-ddr"; +		dev-handle = <&ddr1>; +		reg = <0x12000 0x1000>; +	}; +	dcsr-nal@18000 { +		compatible = "fsl,t1040-dcsr-nal", "fsl,dcsr-nal"; +		reg = <0x18000 0x1000>; +	}; +	dcsr-rcpm@22000 { +		compatible = "fsl,t1040-dcsr-rcpm", "fsl,dcsr-rcpm"; +		reg = <0x22000 0x1000>; +	}; +	dcsr-snpc@30000 { +		compatible = "fsl,t1040-dcsr-snpc", "fsl,dcsr-snpc"; +		reg = <0x30000 0x1000 0x1022000 0x10000>; +	}; +	dcsr-snpc@31000 { +		compatible = "fsl,t1040-dcsr-snpc", "fsl,dcsr-snpc"; +		reg = <0x31000 0x1000 0x1042000 0x10000>; +	}; +	dcsr-cpu-sb-proxy@100000 { +		compatible = "fsl,dcsr-e5500-sb-proxy", "fsl,dcsr-cpu-sb-proxy"; +		cpu-handle = <&cpu0>; +		reg = <0x100000 0x1000 0x101000 0x1000>; +	}; +	dcsr-cpu-sb-proxy@108000 { +		compatible = "fsl,dcsr-e5500-sb-proxy", "fsl,dcsr-cpu-sb-proxy"; +		cpu-handle = <&cpu1>; +		reg = <0x108000 0x1000 0x109000 0x1000>; +	}; +	dcsr-cpu-sb-proxy@110000 { +		compatible = "fsl,dcsr-e5500-sb-proxy", "fsl,dcsr-cpu-sb-proxy"; +		cpu-handle = <&cpu2>; +		reg = <0x110000 0x1000 0x111000 0x1000>; +	}; +	dcsr-cpu-sb-proxy@118000 { +		compatible = "fsl,dcsr-e5500-sb-proxy", "fsl,dcsr-cpu-sb-proxy"; +		cpu-handle = <&cpu3>; +		reg = <0x118000 0x1000 0x119000 0x1000>; +	}; +}; + +&soc { +	#address-cells = <1>; +	#size-cells = <1>; +	device_type = "soc"; +	compatible = "simple-bus"; + +	soc-sram-error { +		compatible = "fsl,soc-sram-error"; +		interrupts = <16 2 1 29>; +	}; + +	corenet-law@0 { +		compatible = "fsl,corenet-law"; +		reg = <0x0 0x1000>; +		fsl,num-laws = <16>; +	}; + +	ddr1: memory-controller@8000 { +		compatible = "fsl,qoriq-memory-controller-v5.0", +				"fsl,qoriq-memory-controller"; +		reg = <0x8000 0x1000>; +		interrupts = <16 2 1 23>; +	}; + +	cpc: l3-cache-controller@10000 { +		compatible = "fsl,t1040-l3-cache-controller", "cache"; +		reg = <0x10000 0x1000>; +		interrupts = <16 2 1 27>; +	}; + +	corenet-cf@18000 { +		compatible = "fsl,corenet2-cf", "fsl,corenet-cf"; +		reg = <0x18000 0x1000>; +		interrupts = <16 2 1 31>; +		fsl,ccf-num-csdids = <32>; +		fsl,ccf-num-snoopids = <32>; +	}; + +	iommu@20000 { +		compatible = "fsl,pamu-v1.0", "fsl,pamu"; +		reg = <0x20000 0x1000>; +		ranges = <0 0x20000 0x1000>; +		#address-cells = <1>; +		#size-cells = <1>; +		interrupts = < +			24 2 0 0 +			16 2 1 30>; +		pamu0: pamu@0 { +			reg = <0 0x1000>; +			fsl,primary-cache-geometry = <128 1>; +			fsl,secondary-cache-geometry = <16 2>; +		}; +	}; + +/include/ "qoriq-mpic.dtsi" + +	guts: global-utilities@e0000 { +		compatible = "fsl,t1040-device-config", "fsl,qoriq-device-config-2.0"; +		reg = <0xe0000 0xe00>; +		fsl,has-rstcr; +		fsl,liodn-bits = <12>; +	}; + +	clockgen: global-utilities@e1000 { +		compatible = "fsl,t1040-clockgen", "fsl,qoriq-clockgen-2.0"; +		ranges = <0x0 0xe1000 0x1000>; +		reg = <0xe1000 0x1000>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-2.0"; +			clock-output-names = "sysclk", "fixed-clock"; +		}; + + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2", "pll0-div4"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2", "pll1-div4"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				 <&pll1 0>, <&pll1 1>, <&pll1 2>; +			clock-names = "pll0", "pll0-div2", "pll1-div4", +				"pll1", "pll1-div2", "pll1-div4"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				 <&pll1 0>, <&pll1 1>, <&pll1 2>; +			clock-names = "pll0", "pll0-div2", "pll1-div4", +				"pll1", "pll1-div2", "pll1-div4"; +			clock-output-names = "cmux1"; +		}; + +		mux2: mux2@40 { +			#clock-cells = <0>; +			reg = <0x40 4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				 <&pll1 0>, <&pll1 1>, <&pll1 2>; +			clock-names = "pll0", "pll0-div2", "pll1-div4", +				"pll1", "pll1-div2", "pll1-div4"; +			clock-output-names = "cmux2"; +		}; + +		mux3: mux3@60 { +			#clock-cells = <0>; +			reg = <0x60 4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				 <&pll1 0>, <&pll1 1>, <&pll1 2>; +			clock-names = "pll0_0", "pll0_1", "pll0_2", +				"pll1_0", "pll1_1", "pll1_2"; +			clock-output-names = "cmux3"; +		}; +	}; + +	rcpm: global-utilities@e2000 { +		compatible = "fsl,t1040-rcpm", "fsl,qoriq-rcpm-2.0"; +		reg = <0xe2000 0x1000>; +	}; + +	sfp: sfp@e8000 { +		compatible = "fsl,t1040-sfp"; +		reg	   = <0xe8000 0x1000>; +	}; + +	serdes: serdes@ea000 { +		compatible = "fsl,t1040-serdes"; +		reg	   = <0xea000 0x4000>; +	}; + +/include/ "elo3-dma-0.dtsi" +/include/ "elo3-dma-1.dtsi" +/include/ "qoriq-espi-0.dtsi" +	spi@110000 { +		fsl,espi-num-chipselects = <4>; +	}; + +/include/ "qoriq-esdhc-0.dtsi" +	sdhc@114000 { +		compatible = "fsl,t1040-esdhc", "fsl,esdhc"; +		fsl,iommu-parent = <&pamu0>; +		fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */ +		sdhci,auto-cmd12; +	}; +/include/ "qoriq-i2c-0.dtsi" +/include/ "qoriq-i2c-1.dtsi" +/include/ "qoriq-duart-0.dtsi" +/include/ "qoriq-duart-1.dtsi" +/include/ "qoriq-gpio-0.dtsi" +/include/ "qoriq-gpio-1.dtsi" +/include/ "qoriq-gpio-2.dtsi" +/include/ "qoriq-gpio-3.dtsi" +/include/ "qoriq-usb2-mph-0.dtsi" +		usb0: usb@210000 { +			compatible = "fsl-usb2-mph-v2.4", "fsl-usb2-mph"; +			fsl,iommu-parent = <&pamu0>; +			fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */ +			phy_type = "utmi"; +			port0; +		}; +/include/ "qoriq-usb2-dr-0.dtsi" +		usb1: usb@211000 { +			compatible = "fsl-usb2-dr-v2.4", "fsl-usb2-dr"; +			fsl,iommu-parent = <&pamu0>; +			fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */ +			dr_mode = "host"; +			phy_type = "utmi"; +		}; + +	display@180000 { +		compatible = "fsl,t1040-diu", "fsl,diu"; +		reg = <0x180000 1000>; +		interrupts = <74 2 0 0>; +	}; + +/include/ "qoriq-sata2-0.dtsi" +	sata@220000 { +		fsl,iommu-parent = <&pamu0>; +		fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */ +	}; +/include/ "qoriq-sata2-1.dtsi" +	sata@221000 { +		fsl,iommu-parent = <&pamu0>; +		fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */ +	}; +/include/ "qoriq-sec5.0-0.dtsi" +}; diff --git a/arch/powerpc/boot/dts/fsl/t1042si-post.dtsi b/arch/powerpc/boot/dts/fsl/t1042si-post.dtsi new file mode 100644 index 00000000000..319b74f2972 --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/t1042si-post.dtsi @@ -0,0 +1,37 @@ +/* + * T1042 Silicon/SoC Device Tree Source (post include) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "t1040si-post.dtsi" + +/* Place holder for ethernet related device tree nodes */ diff --git a/arch/powerpc/boot/dts/fsl/t104xsi-pre.dtsi b/arch/powerpc/boot/dts/fsl/t104xsi-pre.dtsi new file mode 100644 index 00000000000..bbb7025ca9c --- /dev/null +++ b/arch/powerpc/boot/dts/fsl/t104xsi-pre.dtsi @@ -0,0 +1,104 @@ +/* + * T1040/T1042 Silicon/SoC Device Tree Source (pre include) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *	 notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *	 notice, this list of conditions and the following disclaimer in the + *	 documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *	 names of its contributors may be used to endorse or promote products + *	 derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/dts-v1/; + +/include/ "e5500_power_isa.dtsi" + +/ { +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	aliases { +		ccsr = &soc; +		dcsr = &dcsr; + +		serial0 = &serial0; +		serial1 = &serial1; +		serial2 = &serial2; +		serial3 = &serial3; +		pci0 = &pci0; +		pci1 = &pci1; +		pci2 = &pci2; +		pci3 = &pci3; +		usb0 = &usb0; +		usb1 = &usb1; +		sdhc = &sdhc; + +		crypto = &crypto; +	}; + +	cpus { +		#address-cells = <1>; +		#size-cells = <0>; + +		cpu0: PowerPC,e5500@0 { +			device_type = "cpu"; +			reg = <0>; +			clocks = <&mux0>; +			next-level-cache = <&L2_1>; +			L2_1: l2-cache { +				next-level-cache = <&cpc>; +			}; +		}; +		cpu1: PowerPC,e5500@1 { +			device_type = "cpu"; +			reg = <1>; +			clocks = <&mux1>; +			next-level-cache = <&L2_2>; +			L2_2: l2-cache { +				next-level-cache = <&cpc>; +			}; +		}; +		cpu2: PowerPC,e5500@2 { +			device_type = "cpu"; +			reg = <2>; +			clocks = <&mux2>; +			next-level-cache = <&L2_3>; +			L2_3: l2-cache { +				next-level-cache = <&cpc>; +			}; +		}; +		cpu3: PowerPC,e5500@3 { +			device_type = "cpu"; +			reg = <3>; +			clocks = <&mux3>; +			next-level-cache = <&L2_4>; +			L2_4: l2-cache { +				next-level-cache = <&cpc>; +			}; +		}; +	}; +}; diff --git a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi index 510afa362de..793669baa13 100644 --- a/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi +++ b/arch/powerpc/boot/dts/fsl/t4240si-post.dtsi @@ -343,7 +343,7 @@  	};  	corenet-cf@18000 { -		compatible = "fsl,corenet-cf"; +		compatible = "fsl,corenet2-cf", "fsl,corenet-cf";  		reg = <0x18000 0x1000>;  		interrupts = <16 2 1 31>;  		fsl,ccf-num-csdids = <32>; @@ -353,6 +353,7 @@  	iommu@20000 {  		compatible = "fsl,pamu-v1.0", "fsl,pamu";  		reg = <0x20000 0x6000>; +		fsl,portid-mapping = <0x8000>;  		interrupts = <  			24 2 0 0  			16 2 1 30>; @@ -369,7 +370,93 @@  	clockgen: global-utilities@e1000 {  		compatible = "fsl,t4240-clockgen", "fsl,qoriq-clockgen-2.0"; +		ranges = <0x0 0xe1000 0x1000>;  		reg = <0xe1000 0x1000>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-2.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2", "pll0-div4"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2", "pll1-div4"; +		}; + +		pll2: pll2@840 { +			#clock-cells = <1>; +			reg = <0x840 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll2", "pll2-div2", "pll2-div4"; +		}; + +		pll3: pll3@860 { +			#clock-cells = <1>; +			reg = <0x860 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll3", "pll3-div2", "pll3-div4"; +		}; + +		pll4: pll4@880 { +			#clock-cells = <1>; +			reg = <0x880 0x4>; +			compatible = "fsl,qoriq-core-pll-2.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll4", "pll4-div2", "pll4-div4"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				<&pll1 0>, <&pll1 1>, <&pll1 2>, +				<&pll2 0>, <&pll2 1>, <&pll2 2>; +			clock-names = "pll0", "pll0-div2", "pll0-div4", +				"pll1", "pll1-div2", "pll1-div4", +				"pll2", "pll2-div2", "pll2-div4"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 0x4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll0 2>, +				<&pll1 0>, <&pll1 1>, <&pll1 2>, +				<&pll2 0>, <&pll2 1>, <&pll2 2>; +			clock-names = "pll0", "pll0-div2", "pll0-div4", +				"pll1", "pll1-div2", "pll1-div4", +				"pll2", "pll2-div2", "pll2-div4"; +			clock-output-names = "cmux1"; +		}; + +		mux2: mux2@40 { +			#clock-cells = <0>; +			reg = <0x40 0x4>; +			compatible = "fsl,qoriq-core-mux-2.0"; +			clocks = <&pll3 0>, <&pll3 1>, <&pll3 2>, +				<&pll4 0>, <&pll4 1>, <&pll4 2>; +			clock-names = "pll3", "pll3-div2", "pll3-div4", +				"pll4", "pll4-div2", "pll4-div4"; +			clock-output-names = "cmux2"; +		};  	};  	rcpm: global-utilities@e2000 { @@ -387,8 +474,8 @@  		reg	   = <0xea000 0x4000>;  	}; -/include/ "qoriq-dma-0.dtsi" -/include/ "qoriq-dma-1.dtsi" +/include/ "elo3-dma-0.dtsi" +/include/ "elo3-dma-1.dtsi"  /include/ "qoriq-espi-0.dtsi"  	spi@110000 { diff --git a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi index a93c55a8856..d2f157edbe8 100644 --- a/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi +++ b/arch/powerpc/boot/dts/fsl/t4240si-pre.dtsi @@ -67,62 +67,86 @@  		cpu0: PowerPC,e6500@0 {  			device_type = "cpu";  			reg = <0 1>; +			clocks = <&mux0>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu1: PowerPC,e6500@2 {  			device_type = "cpu";  			reg = <2 3>; +			clocks = <&mux0>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu2: PowerPC,e6500@4 {  			device_type = "cpu";  			reg = <4 5>; +			clocks = <&mux0>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu3: PowerPC,e6500@6 {  			device_type = "cpu";  			reg = <6 7>; +			clocks = <&mux0>;  			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>;  		};  		cpu4: PowerPC,e6500@8 {  			device_type = "cpu";  			reg = <8 9>; +			clocks = <&mux1>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>;  		};  		cpu5: PowerPC,e6500@10 {  			device_type = "cpu";  			reg = <10 11>; +			clocks = <&mux1>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>;  		};  		cpu6: PowerPC,e6500@12 {  			device_type = "cpu";  			reg = <12 13>; +			clocks = <&mux1>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>;  		};  		cpu7: PowerPC,e6500@14 {  			device_type = "cpu";  			reg = <14 15>; +			clocks = <&mux1>;  			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>;  		};  		cpu8: PowerPC,e6500@16 {  			device_type = "cpu";  			reg = <16 17>; +			clocks = <&mux2>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>;  		};  		cpu9: PowerPC,e6500@18 {  			device_type = "cpu";  			reg = <18 19>; +			clocks = <&mux2>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>;  		};  		cpu10: PowerPC,e6500@20 {  			device_type = "cpu";  			reg = <20 21>; +			clocks = <&mux2>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>;  		};  		cpu11: PowerPC,e6500@22 {  			device_type = "cpu";  			reg = <22 23>; +			clocks = <&mux2>;  			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>;  		};  	};  }; diff --git a/arch/powerpc/boot/dts/gef_ppc9a.dts b/arch/powerpc/boot/dts/gef_ppc9a.dts index 38dcb96c8e2..83eb0fda266 100644 --- a/arch/powerpc/boot/dts/gef_ppc9a.dts +++ b/arch/powerpc/boot/dts/gef_ppc9a.dts @@ -292,13 +292,11 @@  					interrupt-parent = <&gef_pic>;  					interrupts = <0x9 0x4>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&gef_pic>;  					interrupts = <0x8 0x4>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/gef_sbc310.dts b/arch/powerpc/boot/dts/gef_sbc310.dts index 5ab8932d09b..d426dd3de9e 100644 --- a/arch/powerpc/boot/dts/gef_sbc310.dts +++ b/arch/powerpc/boot/dts/gef_sbc310.dts @@ -290,13 +290,11 @@  					interrupt-parent = <&gef_pic>;  					interrupts = <0x9 0x4>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&gef_pic>;  					interrupts = <0x8 0x4>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/gef_sbc610.dts b/arch/powerpc/boot/dts/gef_sbc610.dts index d5341f5741a..5db3399b76b 100644 --- a/arch/powerpc/boot/dts/gef_sbc610.dts +++ b/arch/powerpc/boot/dts/gef_sbc610.dts @@ -290,13 +290,11 @@  					interrupt-parent = <&gef_pic>;  					interrupts = <0x9 0x4>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&gef_pic>;  					interrupts = <0x8 0x4>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/holly.dts b/arch/powerpc/boot/dts/holly.dts index c6e11ebeceb..43e6f0c8e44 100644 --- a/arch/powerpc/boot/dts/holly.dts +++ b/arch/powerpc/boot/dts/holly.dts @@ -58,7 +58,6 @@  		};  		MDIO: mdio@6000 { -			device_type = "mdio";  			compatible = "tsi109-mdio", "tsi108-mdio";  			reg = <0x00006000 0x00000050>;  			#address-cells = <1>; diff --git a/arch/powerpc/boot/dts/kilauea.dts b/arch/powerpc/boot/dts/kilauea.dts index 1613d6e4049..5ba7f01e2a2 100644 --- a/arch/powerpc/boot/dts/kilauea.dts +++ b/arch/powerpc/boot/dts/kilauea.dts @@ -406,7 +406,7 @@  		MSI: ppc4xx-msi@C10000000 {  			compatible = "amcc,ppc4xx-msi", "ppc4xx-msi"; -			reg = < 0x0 0xEF620000 0x100>; +			reg = <0xEF620000 0x100>;  			sdr-base = <0x4B0>;  			msi-data = <0x00000000>;  			msi-mask = <0x44440000>; diff --git a/arch/powerpc/boot/dts/kmcoge4.dts b/arch/powerpc/boot/dts/kmcoge4.dts new file mode 100644 index 00000000000..89b4119f3b1 --- /dev/null +++ b/arch/powerpc/boot/dts/kmcoge4.dts @@ -0,0 +1,152 @@ +/* + * Keymile kmcoge4 Device Tree Source, based on the P2041RDB DTS + * + * (C) Copyright 2014 + * Valentin Longchamp, Keymile AG, valentin.longchamp@keymile.com + * + * Copyright 2011 Freescale Semiconductor Inc. + * + * 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. + */ + +/include/ "fsl/p2041si-pre.dtsi" + +/ { +	model = "keymile,kmcoge4"; +	compatible = "keymile,kmcoge4", "keymile,kmp204x"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	memory { +		device_type = "memory"; +	}; + +	dcsr: dcsr@f00000000 { +		ranges = <0x00000000 0xf 0x00000000 0x01008000>; +	}; + +	soc: soc@ffe000000 { +		ranges = <0x00000000 0xf 0xfe000000 0x1000000>; +		reg = <0xf 0xfe000000 0 0x00001000>; +		spi@110000 { +			flash@0 { +				#address-cells = <1>; +				#size-cells = <1>; +				compatible = "spansion,s25fl256s1"; +				reg = <0>; +				spi-max-frequency = <20000000>; /* input clock */ +			}; + +			network_clock@1 { +				compatible = "zarlink,zl30343"; +				reg = <1>; +				spi-max-frequency = <8000000>; +			}; + +			flash@2 { +				#address-cells = <1>; +				#size-cells = <1>; +				compatible = "micron,m25p32"; +				reg = <2>; +				spi-max-frequency = <15000000>; +			}; +		}; + +		i2c@119000 { +			status = "disabled"; +		}; + +		i2c@119100 { +			status = "disabled"; +		}; + +		usb0: usb@210000 { +			status = "disabled"; +		}; + +		usb1: usb@211000 { +			status = "disabled"; +		}; + +		sata@220000 { +			status = "disabled"; +		}; + +		sata@221000 { +			status = "disabled"; +		}; +	}; + +	rio: rapidio@ffe0c0000 { +		status = "disabled"; +	}; + +	lbc: localbus@ffe124000 { +		reg = <0xf 0xfe124000 0 0x1000>; +		ranges = <0 0 0xf 0xffa00000 0x00040000		/* LB 0 */ +			  1 0 0xf 0xfb000000 0x00010000		/* LB 1 */ +			  2 0 0xf 0xd0000000 0x10000000		/* LB 2 */ +			  3 0 0xf 0xe0000000 0x10000000>;	/* LB 3 */ + +		nand@0,0 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "fsl,elbc-fcm-nand"; +			reg = <0 0 0x40000>; +		}; + +		board-control@1,0 { +			compatible = "keymile,qriox"; +			reg = <1 0 0x80>; +		}; + +		chassis-mgmt@3,0 { +			compatible = "keymile,bfticu"; +			interrupt-controller; +			#interrupt-cells = <2>; +			reg = <3 0 0x100>; +			interrupt-parent = <&mpic>; +			interrupts = <6 1 0 0>; +		}; +	}; + +	pci0: pcie@ffe200000 { +		reg = <0xf 0xfe200000 0 0x1000>; +		ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x20000000 +			  0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>; +		pcie@0 { +			ranges = <0x02000000 0 0xe0000000 +				  0x02000000 0 0xe0000000 +				  0 0x20000000 + +				  0x01000000 0 0x00000000 +				  0x01000000 0 0x00000000 +				  0 0x00010000>; +		}; +	}; + +	pci1: pcie@ffe201000 { +		status = "disabled"; +	}; + +	pci2: pcie@ffe202000 { +		reg = <0xf 0xfe202000 0 0x1000>; +		ranges = <0x02000000 0 0xe0000000 0xc 0x20000000 0 0x20000000 +			  0x01000000 0 0x00000000 0xf 0xf8010000 0 0x00010000>; +		pcie@0 { +			ranges = <0x02000000 0 0xe0000000 +				  0x02000000 0 0xe0000000 +				  0 0x20000000 + +				  0x01000000 0 0x00000000 +				  0x01000000 0 0x00000000 +				  0 0x00010000>; +		}; +	}; +}; + +/include/ "fsl/p2041si-post.dtsi" diff --git a/arch/powerpc/boot/dts/ksi8560.dts b/arch/powerpc/boot/dts/ksi8560.dts index 296c572ea60..5d68236e7c3 100644 --- a/arch/powerpc/boot/dts/ksi8560.dts +++ b/arch/powerpc/boot/dts/ksi8560.dts @@ -161,13 +161,11 @@  				PHY1: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				PHY2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { @@ -284,7 +282,6 @@  				PHY0: ethernet-phy@0 {  					interrupt-parent = <&mpic>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  			}; diff --git a/arch/powerpc/boot/dts/mpc5121.dtsi b/arch/powerpc/boot/dts/mpc5121.dtsi index bd14c00e514..2c0e1552d20 100644 --- a/arch/powerpc/boot/dts/mpc5121.dtsi +++ b/arch/powerpc/boot/dts/mpc5121.dtsi @@ -9,6 +9,8 @@   * option) any later version.   */ +#include <dt-bindings/clock/mpc512x-clock.h> +  /dts-v1/;  / { @@ -49,6 +51,10 @@  		compatible = "fsl,mpc5121-mbx";  		reg = <0x20000000 0x4000>;  		interrupts = <66 0x8>; +		clocks = <&clks MPC512x_CLK_MBX_BUS>, +			 <&clks MPC512x_CLK_MBX_3D>, +			 <&clks MPC512x_CLK_MBX>; +		clock-names = "mbx-bus", "mbx-3d", "mbx";  	};  	sram@30000000 { @@ -62,6 +68,8 @@  		interrupts = <6 8>;  		#address-cells = <1>;  		#size-cells = <1>; +		clocks = <&clks MPC512x_CLK_NFC>; +		clock-names = "ipg";  	};  	localbus@80000020 { @@ -73,11 +81,21 @@  		ranges = <0x0 0x0 0xfc000000 0x04000000>;  	}; +	clocks { +		#address-cells = <1>; +		#size-cells = <0>; + +		osc: osc { +			compatible = "fixed-clock"; +			#clock-cells = <0>; +			clock-frequency = <33000000>; +		}; +	}; +  	soc@80000000 {  		compatible = "fsl,mpc5121-immr";  		#address-cells = <1>;  		#size-cells = <1>; -		#interrupt-cells = <2>;  		ranges = <0x0 0x80000000 0x400000>;  		reg = <0x80000000 0x400000>;  		bus-frequency = <66000000>;	/* 66 MHz ips bus */ @@ -118,9 +136,12 @@  		};  		/* Clock control */ -		clock@f00 { +		clks: clock@f00 {  			compatible = "fsl,mpc5121-clock";  			reg = <0xf00 0x100>; +			#clock-cells = <1>; +			clocks = <&osc>; +			clock-names = "osc";  		};  		/* Power Management Controller */ @@ -140,12 +161,24 @@  			compatible = "fsl,mpc5121-mscan";  			reg = <0x1300 0x80>;  			interrupts = <12 0x8>; +			clocks = <&clks MPC512x_CLK_BDLC>, +				 <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SYS>, +				 <&clks MPC512x_CLK_REF>, +				 <&clks MPC512x_CLK_MSCAN0_MCLK>; +			clock-names = "ipg", "ips", "sys", "ref", "mclk";  		};  		can@1380 {  			compatible = "fsl,mpc5121-mscan";  			reg = <0x1380 0x80>;  			interrupts = <13 0x8>; +			clocks = <&clks MPC512x_CLK_BDLC>, +				 <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SYS>, +				 <&clks MPC512x_CLK_REF>, +				 <&clks MPC512x_CLK_MSCAN1_MCLK>; +			clock-names = "ipg", "ips", "sys", "ref", "mclk";  		};  		sdhc@1500 { @@ -154,6 +187,9 @@  			interrupts = <8 0x8>;  			dmas = <&dma0 30>;  			dma-names = "rx-tx"; +			clocks = <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SDHC>; +			clock-names = "ipg", "per";  		};  		i2c@1700 { @@ -162,6 +198,8 @@  			compatible = "fsl,mpc5121-i2c", "fsl-i2c";  			reg = <0x1700 0x20>;  			interrupts = <9 0x8>; +			clocks = <&clks MPC512x_CLK_I2C>; +			clock-names = "ipg";  		};  		i2c@1720 { @@ -170,6 +208,8 @@  			compatible = "fsl,mpc5121-i2c", "fsl-i2c";  			reg = <0x1720 0x20>;  			interrupts = <10 0x8>; +			clocks = <&clks MPC512x_CLK_I2C>; +			clock-names = "ipg";  		};  		i2c@1740 { @@ -178,6 +218,8 @@  			compatible = "fsl,mpc5121-i2c", "fsl-i2c";  			reg = <0x1740 0x20>;  			interrupts = <11 0x8>; +			clocks = <&clks MPC512x_CLK_I2C>; +			clock-names = "ipg";  		};  		i2ccontrol@1760 { @@ -189,30 +231,48 @@  			compatible = "fsl,mpc5121-axe";  			reg = <0x2000 0x100>;  			interrupts = <42 0x8>; +			clocks = <&clks MPC512x_CLK_AXE>; +			clock-names = "ipg";  		};  		display@2100 {  			compatible = "fsl,mpc5121-diu";  			reg = <0x2100 0x100>;  			interrupts = <64 0x8>; +			clocks = <&clks MPC512x_CLK_DIU>; +			clock-names = "ipg";  		};  		can@2300 {  			compatible = "fsl,mpc5121-mscan";  			reg = <0x2300 0x80>;  			interrupts = <90 0x8>; +			clocks = <&clks MPC512x_CLK_BDLC>, +				 <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SYS>, +				 <&clks MPC512x_CLK_REF>, +				 <&clks MPC512x_CLK_MSCAN2_MCLK>; +			clock-names = "ipg", "ips", "sys", "ref", "mclk";  		};  		can@2380 {  			compatible = "fsl,mpc5121-mscan";  			reg = <0x2380 0x80>;  			interrupts = <91 0x8>; +			clocks = <&clks MPC512x_CLK_BDLC>, +				 <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SYS>, +				 <&clks MPC512x_CLK_REF>, +				 <&clks MPC512x_CLK_MSCAN3_MCLK>; +			clock-names = "ipg", "ips", "sys", "ref", "mclk";  		};  		viu@2400 {  			compatible = "fsl,mpc5121-viu";  			reg = <0x2400 0x400>;  			interrupts = <67 0x8>; +			clocks = <&clks MPC512x_CLK_VIU>; +			clock-names = "ipg";  		};  		mdio@2800 { @@ -220,6 +280,8 @@  			reg = <0x2800 0x800>;  			#address-cells = <1>;  			#size-cells = <0>; +			clocks = <&clks MPC512x_CLK_FEC>; +			clock-names = "per";  		};  		eth0: ethernet@2800 { @@ -228,6 +290,8 @@  			reg = <0x2800 0x800>;  			local-mac-address = [ 00 00 00 00 00 00 ];  			interrupts = <4 0x8>; +			clocks = <&clks MPC512x_CLK_FEC>; +			clock-names = "per";  		};  		/* USB1 using external ULPI PHY */ @@ -239,6 +303,8 @@  			interrupts = <43 0x8>;  			dr_mode = "otg";  			phy_type = "ulpi"; +			clocks = <&clks MPC512x_CLK_USB1>; +			clock-names = "ipg";  		};  		/* USB0 using internal UTMI PHY */ @@ -250,6 +316,8 @@  			interrupts = <44 0x8>;  			dr_mode = "otg";  			phy_type = "utmi_wide"; +			clocks = <&clks MPC512x_CLK_USB2>; +			clock-names = "ipg";  		};  		/* IO control */ @@ -268,6 +336,8 @@  			compatible = "fsl,mpc5121-pata";  			reg = <0x10200 0x100>;  			interrupts = <5 0x8>; +			clocks = <&clks MPC512x_CLK_PATA>; +			clock-names = "ipg";  		};  		/* 512x PSCs are not 52xx PSC compatible */ @@ -279,6 +349,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC0>, +				 <&clks MPC512x_CLK_PSC0_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC1 */ @@ -288,6 +361,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC1>, +				 <&clks MPC512x_CLK_PSC1_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC2 */ @@ -297,6 +373,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC2>, +				 <&clks MPC512x_CLK_PSC2_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC3 */ @@ -306,6 +385,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC3>, +				 <&clks MPC512x_CLK_PSC3_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC4 */ @@ -315,6 +397,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC4>, +				 <&clks MPC512x_CLK_PSC4_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC5 */ @@ -324,6 +409,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC5>, +				 <&clks MPC512x_CLK_PSC5_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC6 */ @@ -333,6 +421,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC6>, +				 <&clks MPC512x_CLK_PSC6_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC7 */ @@ -342,6 +433,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC7>, +				 <&clks MPC512x_CLK_PSC7_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC8 */ @@ -351,6 +445,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC8>, +				 <&clks MPC512x_CLK_PSC8_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC9 */ @@ -360,6 +457,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC9>, +				 <&clks MPC512x_CLK_PSC9_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC10 */ @@ -369,6 +469,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC10>, +				 <&clks MPC512x_CLK_PSC10_MCLK>; +			clock-names = "ipg", "mclk";  		};  		/* PSC11 */ @@ -378,12 +481,17 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC11>, +				 <&clks MPC512x_CLK_PSC11_MCLK>; +			clock-names = "ipg", "mclk";  		};  		pscfifo@11f00 {  			compatible = "fsl,mpc5121-psc-fifo";  			reg = <0x11f00 0x100>;  			interrupts = <40 0x8>; +			clocks = <&clks MPC512x_CLK_PSC_FIFO>; +			clock-names = "ipg";  		};  		dma0: dma@14000 { @@ -401,6 +509,8 @@  		#address-cells = <3>;  		#size-cells = <2>;  		#interrupt-cells = <1>; +		clocks = <&clks MPC512x_CLK_PCI>; +		clock-names = "ipg";  		reg = <0x80008500 0x100	/* internal registers */  		       0x80008300 0x8>;	/* config space access registers */ diff --git a/arch/powerpc/boot/dts/mpc5125twr.dts b/arch/powerpc/boot/dts/mpc5125twr.dts index 4177b62240c..e4f29747174 100644 --- a/arch/powerpc/boot/dts/mpc5125twr.dts +++ b/arch/powerpc/boot/dts/mpc5125twr.dts @@ -12,6 +12,8 @@   * option) any later version.   */ +#include <dt-bindings/clock/mpc512x-clock.h> +  /dts-v1/;  / { @@ -54,11 +56,21 @@  		reg = <0x30000000 0x08000>;		// 32K at 0x30000000  	}; +	clocks { +		#address-cells = <1>; +		#size-cells = <0>; + +		osc: osc { +			compatible = "fixed-clock"; +			#clock-cells = <0>; +			clock-frequency = <33000000>; +		}; +	}; +  	soc@80000000 {  		compatible = "fsl,mpc5121-immr";  		#address-cells = <1>;  		#size-cells = <1>; -		#interrupt-cells = <2>;  		ranges = <0x0 0x80000000 0x400000>;  		reg = <0x80000000 0x400000>;  		bus-frequency = <66000000>;	// 66 MHz ips bus @@ -88,9 +100,12 @@  			reg = <0xe00 0x100>;  		}; -		clock@f00 {	// Clock control +		clks: clock@f00 {	// Clock control  			compatible = "fsl,mpc5121-clock";  			reg = <0xf00 0x100>; +			#clock-cells = <1>; +			clocks = <&osc>; +			clock-names = "osc";  		};  		pmc@1000{  // Power Management Controller @@ -115,18 +130,33 @@  			compatible = "fsl,mpc5121-mscan";  			interrupts = <12 0x8>;  			reg = <0x1300 0x80>; +			clocks = <&clks MPC512x_CLK_BDLC>, +				 <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SYS>, +				 <&clks MPC512x_CLK_REF>, +				 <&clks MPC512x_CLK_MSCAN0_MCLK>; +			clock-names = "ipg", "ips", "sys", "ref", "mclk";  		};  		can@1380 {  			compatible = "fsl,mpc5121-mscan";  			interrupts = <13 0x8>;  			reg = <0x1380 0x80>; +			clocks = <&clks MPC512x_CLK_BDLC>, +				 <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SYS>, +				 <&clks MPC512x_CLK_REF>, +				 <&clks MPC512x_CLK_MSCAN1_MCLK>; +			clock-names = "ipg", "ips", "sys", "ref", "mclk";  		};  		sdhc@1500 {  			compatible = "fsl,mpc5121-sdhc";  			interrupts = <8 0x8>;  			reg = <0x1500 0x100>; +			clocks = <&clks MPC512x_CLK_IPS>, +				 <&clks MPC512x_CLK_SDHC>; +			clock-names = "ipg", "per";  		};  		i2c@1700 { @@ -135,6 +165,8 @@  			compatible = "fsl,mpc5121-i2c", "fsl-i2c";  			reg = <0x1700 0x20>;  			interrupts = <0x9 0x8>; +			clocks = <&clks MPC512x_CLK_I2C>; +			clock-names = "ipg";  		};  		i2c@1720 { @@ -143,6 +175,8 @@  			compatible = "fsl,mpc5121-i2c", "fsl-i2c";  			reg = <0x1720 0x20>;  			interrupts = <0xa 0x8>; +			clocks = <&clks MPC512x_CLK_I2C>; +			clock-names = "ipg";  		};  		i2c@1740 { @@ -151,6 +185,8 @@  			compatible = "fsl,mpc5121-i2c", "fsl-i2c";  			reg = <0x1740 0x20>;  			interrupts = <0xb 0x8>; +			clocks = <&clks MPC512x_CLK_I2C>; +			clock-names = "ipg";  		};  		i2ccontrol@1760 { @@ -162,6 +198,8 @@  			compatible = "fsl,mpc5121-diu";  			reg = <0x2100 0x100>;  			interrupts = <64 0x8>; +			clocks = <&clks MPC512x_CLK_DIU>; +			clock-names = "ipg";  		};  		mdio@2800 { @@ -181,6 +219,8 @@  			interrupts = <4 0x8>;  			phy-handle = < &phy0 >;  			phy-connection-type = "rmii"; +			clocks = <&clks MPC512x_CLK_FEC>; +			clock-names = "per";  		};  		// IO control @@ -189,6 +229,10 @@  			reg = <0xA000 0x1000>;  		}; +		// disable USB1 port +		// TODO: +		// correct pinmux config and fix USB3320 ulpi dependency +		// before re-enabling it  		usb@3000 {  			compatible = "fsl,mpc5121-usb2-dr";  			reg = <0x3000 0x400>; @@ -197,6 +241,9 @@  			interrupts = <43 0x8>;  			dr_mode = "host";  			phy_type = "ulpi"; +			clocks = <&clks MPC512x_CLK_USB1>; +			clock-names = "ipg"; +			status = "disabled";  		};  		// 5125 PSCs are not 52xx or 5121 PSC compatible @@ -207,6 +254,9 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC1>, +				 <&clks MPC512x_CLK_PSC1_MCLK>; +			clock-names = "ipg", "mclk";  		};  		// PSC9 uart1 aka ttyPSC1 @@ -216,12 +266,17 @@  			interrupts = <40 0x8>;  			fsl,rx-fifo-size = <16>;  			fsl,tx-fifo-size = <16>; +			clocks = <&clks MPC512x_CLK_PSC9>, +				 <&clks MPC512x_CLK_PSC9_MCLK>; +			clock-names = "ipg", "mclk";  		};  		pscfifo@11f00 {  			compatible = "fsl,mpc5121-psc-fifo";  			reg = <0x11f00 0x100>;  			interrupts = <40 0x8>; +			clocks = <&clks MPC512x_CLK_PSC_FIFO>; +			clock-names = "ipg";  		};  		dma@14000 { diff --git a/arch/powerpc/boot/dts/mpc7448hpc2.dts b/arch/powerpc/boot/dts/mpc7448hpc2.dts index 2544f3ecd6e..20a0d22df47 100644 --- a/arch/powerpc/boot/dts/mpc7448hpc2.dts +++ b/arch/powerpc/boot/dts/mpc7448hpc2.dts @@ -68,7 +68,6 @@  		};  		MDIO: mdio@6000 { -			device_type = "mdio";  			compatible = "tsi108-mdio";  			reg = <0x6000 0x50>;  			#address-cells = <1>; diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts index e802ebd88cb..6d2cddf64cf 100644 --- a/arch/powerpc/boot/dts/mpc8272ads.dts +++ b/arch/powerpc/boot/dts/mpc8272ads.dts @@ -182,7 +182,6 @@  			};  			mdio@10d40 { -				device_type = "mdio";  				compatible = "fsl,mpc8272ads-mdio-bitbang",  				             "fsl,mpc8272-mdio-bitbang",  				             "fsl,cpm2-mdio-bitbang"; @@ -196,14 +195,12 @@  					interrupt-parent = <&PIC>;  					interrupts = <23 8>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				PHY1: ethernet-phy@1 {  					interrupt-parent = <&PIC>;  					interrupts = <23 8>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  			}; diff --git a/arch/powerpc/boot/dts/mpc8308_p1m.dts b/arch/powerpc/boot/dts/mpc8308_p1m.dts index 22b0832b6c3..57f86cdf9f3 100644 --- a/arch/powerpc/boot/dts/mpc8308_p1m.dts +++ b/arch/powerpc/boot/dts/mpc8308_p1m.dts @@ -189,13 +189,11 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&ipic>;  					interrupts = <19 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; @@ -298,7 +296,7 @@  		};  		dma@2c000 { -			compatible = "fsl,mpc8308-dma", "fsl,mpc5121-dma"; +			compatible = "fsl,mpc8308-dma";  			reg = <0x2c000 0x1800>;  			interrupts = <3 0x8  					94 0x8>; diff --git a/arch/powerpc/boot/dts/mpc8308rdb.dts b/arch/powerpc/boot/dts/mpc8308rdb.dts index f66d10d95a8..d0211f0413c 100644 --- a/arch/powerpc/boot/dts/mpc8308rdb.dts +++ b/arch/powerpc/boot/dts/mpc8308rdb.dts @@ -166,7 +166,6 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; @@ -266,7 +265,7 @@  		};  		dma@2c000 { -			compatible = "fsl,mpc8308-dma", "fsl,mpc5121-dma"; +			compatible = "fsl,mpc8308-dma";  			reg = <0x2c000 0x1800>;  			interrupts = <3 0x8  					94 0x8>; diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts index 1c836c6c5be..4b635dc4ecd 100644 --- a/arch/powerpc/boot/dts/mpc8313erdb.dts +++ b/arch/powerpc/boot/dts/mpc8313erdb.dts @@ -217,7 +217,6 @@  					interrupt-parent = <&ipic>;  					interrupts = <20 0x8>;  					reg = <0x4>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8315erdb.dts b/arch/powerpc/boot/dts/mpc8315erdb.dts index 811848e93ae..43546844ea5 100644 --- a/arch/powerpc/boot/dts/mpc8315erdb.dts +++ b/arch/powerpc/boot/dts/mpc8315erdb.dts @@ -216,14 +216,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <20 0x8>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&ipic>;  					interrupts = <19 0x8>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts index da9c72ddc34..0793cdf0d46 100644 --- a/arch/powerpc/boot/dts/mpc832x_mds.dts +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts @@ -356,13 +356,11 @@  				interrupt-parent = <&ipic>;  				interrupts = <17 0x8>;  				reg = <0x3>; -				device_type = "ethernet-phy";  			};  			phy4: ethernet-phy@04 {  				interrupt-parent = <&ipic>;  				interrupts = <18 0x8>;  				reg = <0x4>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts index ff7b15b340a..91df1eb1666 100644 --- a/arch/powerpc/boot/dts/mpc832x_rdb.dts +++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts @@ -314,13 +314,11 @@  				interrupt-parent = <&ipic>;  				interrupts = <0>;  				reg = <0x0>; -				device_type = "ethernet-phy";  			};  			phy04:ethernet-phy@04 {  				interrupt-parent = <&ipic>;  				interrupts = <0>;  				reg = <0x4>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts index 2608679d0d4..cf8542401a3 100644 --- a/arch/powerpc/boot/dts/mpc8349emitx.dts +++ b/arch/powerpc/boot/dts/mpc8349emitx.dts @@ -240,7 +240,6 @@  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x1c>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts index 6cd044d8fb8..f00066dcc8d 100644 --- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts +++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts @@ -176,7 +176,6 @@  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x1c>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts index 4552864082c..4843c3ff716 100644 --- a/arch/powerpc/boot/dts/mpc834x_mds.dts +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts @@ -193,14 +193,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts index 81dd513d630..ecb6ccd3a6a 100644 --- a/arch/powerpc/boot/dts/mpc836x_mds.dts +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts @@ -397,13 +397,11 @@  				interrupt-parent = <&ipic>;  				interrupts = <17 0x8>;  				reg = <0x0>; -				device_type = "ethernet-phy";  			};  			phy1: ethernet-phy@01 {  				interrupt-parent = <&ipic>;  				interrupts = <18 0x8>;  				reg = <0x1>; -				device_type = "ethernet-phy";  			};  			tbi-phy@2 {  				device_type = "tbi-phy"; diff --git a/arch/powerpc/boot/dts/mpc836x_rdk.dts b/arch/powerpc/boot/dts/mpc836x_rdk.dts index b6e9aec1d86..daeacbdcf8b 100644 --- a/arch/powerpc/boot/dts/mpc836x_rdk.dts +++ b/arch/powerpc/boot/dts/mpc836x_rdk.dts @@ -332,25 +332,21 @@  				reg = <0x2120 0x18>;  				phy1: ethernet-phy@1 { -					device_type = "ethernet-phy";  					compatible = "national,DP83848VV";  					reg = <1>;  				};  				phy2: ethernet-phy@2 { -					device_type = "ethernet-phy";  					compatible = "broadcom,BCM5481UA2KMLG";  					reg = <2>;  				};  				phy3: ethernet-phy@3 { -					device_type = "ethernet-phy";  					compatible = "national,DP83848VV";  					reg = <3>;  				};  				phy4: ethernet-phy@4 { -					device_type = "ethernet-phy";  					compatible = "broadcom,BCM5481UA2KMLG";  					reg = <4>;  				}; diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts index cfccef57cd1..c2c062e8175 100644 --- a/arch/powerpc/boot/dts/mpc8377_mds.dts +++ b/arch/powerpc/boot/dts/mpc8377_mds.dts @@ -225,14 +225,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts index 353deff1b7f..2b4b6532d69 100644 --- a/arch/powerpc/boot/dts/mpc8377_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts @@ -277,7 +277,6 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8377_wlan.dts b/arch/powerpc/boot/dts/mpc8377_wlan.dts index ef4a305a0d0..c0c790168b9 100644 --- a/arch/powerpc/boot/dts/mpc8377_wlan.dts +++ b/arch/powerpc/boot/dts/mpc8377_wlan.dts @@ -253,14 +253,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts index 538fcb92733..1b82b77f941 100644 --- a/arch/powerpc/boot/dts/mpc8378_mds.dts +++ b/arch/powerpc/boot/dts/mpc8378_mds.dts @@ -264,14 +264,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts index 32333a908f3..74b6a535a41 100644 --- a/arch/powerpc/boot/dts/mpc8378_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts @@ -277,7 +277,6 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts index 5387092fdfb..38e5048d65d 100644 --- a/arch/powerpc/boot/dts/mpc8379_mds.dts +++ b/arch/powerpc/boot/dts/mpc8379_mds.dts @@ -262,14 +262,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&ipic>;  					interrupts = <18 0x8>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts index 46224c2430f..3b5cbac8536 100644 --- a/arch/powerpc/boot/dts/mpc8379_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts @@ -275,7 +275,6 @@  					interrupt-parent = <&ipic>;  					interrupts = <17 0x8>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/mpc8536ds.dtsi b/arch/powerpc/boot/dts/mpc8536ds.dtsi index 7c3dde84d19..937ad7e4611 100644 --- a/arch/powerpc/boot/dts/mpc8536ds.dtsi +++ b/arch/powerpc/boot/dts/mpc8536ds.dtsi @@ -200,12 +200,10 @@  		phy0: ethernet-phy@0 {  			interrupts = <10 0x1 0 0>;  			reg = <0>; -			device_type = "ethernet-phy";  		};  		phy1: ethernet-phy@1 {  			interrupts = <10 0x1 0 0>;  			reg = <1>; -			device_type = "ethernet-phy";  		};  		sgmii_phy0: sgmii-phy@0 {  			interrupts = <6 1 0 0>; diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts index 2d31863accf..7ce274c9a2d 100644 --- a/arch/powerpc/boot/dts/mpc8540ads.dts +++ b/arch/powerpc/boot/dts/mpc8540ads.dts @@ -165,19 +165,16 @@  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <7 1>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts index 1c03c266737..4d35a3e0fb0 100644 --- a/arch/powerpc/boot/dts/mpc8541cds.dts +++ b/arch/powerpc/boot/dts/mpc8541cds.dts @@ -165,13 +165,11 @@  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8544ds.dtsi b/arch/powerpc/boot/dts/mpc8544ds.dtsi index b219d035d79..47d986b041f 100644 --- a/arch/powerpc/boot/dts/mpc8544ds.dtsi +++ b/arch/powerpc/boot/dts/mpc8544ds.dtsi @@ -82,12 +82,10 @@  		phy0: ethernet-phy@0 {  			interrupts = <10 1 0 0>;  			reg = <0x0>; -			device_type = "ethernet-phy";  		};  		phy1: ethernet-phy@1 {  			interrupts = <10 1 0 0>;  			reg = <0x1>; -			device_type = "ethernet-phy";  		};  		sgmii_phy0: sgmii-phy@0 { diff --git a/arch/powerpc/boot/dts/mpc8548cds.dtsi b/arch/powerpc/boot/dts/mpc8548cds.dtsi index c61f525e474..3bc7d471122 100644 --- a/arch/powerpc/boot/dts/mpc8548cds.dtsi +++ b/arch/powerpc/boot/dts/mpc8548cds.dtsi @@ -109,22 +109,18 @@  		phy0: ethernet-phy@0 {  			interrupts = <5 1 0 0>;  			reg = <0x0>; -			device_type = "ethernet-phy";  		};  		phy1: ethernet-phy@1 {  			interrupts = <5 1 0 0>;  			reg = <0x1>; -			device_type = "ethernet-phy";  		};  		phy2: ethernet-phy@2 {  			interrupts = <5 1 0 0>;  			reg = <0x2>; -			device_type = "ethernet-phy";  		};  		phy3: ethernet-phy@3 {  			interrupts = <5 1 0 0>;  			reg = <0x3>; -			device_type = "ethernet-phy";  		};  		tbi0: tbi-phy@11 {  			reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts index 36a7ea138c2..f115f21cb0a 100644 --- a/arch/powerpc/boot/dts/mpc8555cds.dts +++ b/arch/powerpc/boot/dts/mpc8555cds.dts @@ -165,13 +165,11 @@  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts index 1a43f5a968f..0d70921d612 100644 --- a/arch/powerpc/boot/dts/mpc8560ads.dts +++ b/arch/powerpc/boot/dts/mpc8560ads.dts @@ -154,25 +154,21 @@  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <7 1>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <7 1>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts index 09598bb5d44..bead2b655b9 100644 --- a/arch/powerpc/boot/dts/mpc8568mds.dts +++ b/arch/powerpc/boot/dts/mpc8568mds.dts @@ -91,22 +91,18 @@  			phy0: ethernet-phy@7 {  				interrupts = <1 1 0 0>;  				reg = <0x7>; -				device_type = "ethernet-phy";  			};  			phy1: ethernet-phy@1 {  				interrupts = <2 1 0 0>;  				reg = <0x1>; -				device_type = "ethernet-phy";  			};  			phy2: ethernet-phy@2 {  				interrupts = <1 1 0 0>;  				reg = <0x2>; -				device_type = "ethernet-phy";  			};  			phy3: ethernet-phy@3 {  				interrupts = <2 1 0 0>;  				reg = <0x3>; -				device_type = "ethernet-phy";  			};  			tbi0: tbi-phy@11 {  				reg = <0x11>; @@ -236,25 +232,21 @@  				interrupt-parent = <&mpic>;  				interrupts = <1 1 0 0>;  				reg = <0x7>; -				device_type = "ethernet-phy";  			};  			qe_phy1: ethernet-phy@01 {  				interrupt-parent = <&mpic>;  				interrupts = <2 1 0 0>;  				reg = <0x1>; -				device_type = "ethernet-phy";  			};  			qe_phy2: ethernet-phy@02 {  				interrupt-parent = <&mpic>;  				interrupts = <1 1 0 0>;  				reg = <0x2>; -				device_type = "ethernet-phy";  			};  			qe_phy3: ethernet-phy@03 {  				interrupt-parent = <&mpic>;  				interrupts = <2 1 0 0>;  				reg = <0x3>; -				device_type = "ethernet-phy";  			};  		};  	}; diff --git a/arch/powerpc/boot/dts/mpc8569mds.dts b/arch/powerpc/boot/dts/mpc8569mds.dts index fe0d60935e9..d0dcdafa5eb 100644 --- a/arch/powerpc/boot/dts/mpc8569mds.dts +++ b/arch/powerpc/boot/dts/mpc8569mds.dts @@ -276,33 +276,27 @@  				interrupt-parent = <&mpic>;  				interrupts = <1 1 0 0>;  				reg = <0x7>; -				device_type = "ethernet-phy";  			};  			qe_phy1: ethernet-phy@01 {  				interrupt-parent = <&mpic>;  				interrupts = <2 1 0 0>;  				reg = <0x1>; -				device_type = "ethernet-phy";  			};  			qe_phy2: ethernet-phy@02 {  				interrupt-parent = <&mpic>;  				interrupts = <3 1 0 0>;  				reg = <0x2>; -				device_type = "ethernet-phy";  			};  			qe_phy3: ethernet-phy@03 {  				interrupt-parent = <&mpic>;  				interrupts = <4 1 0 0>;  				reg = <0x3>; -				device_type = "ethernet-phy";  			};  			qe_phy5: ethernet-phy@04 {  				reg = <0x04>; -				device_type = "ethernet-phy";  			};  			qe_phy7: ethernet-phy@06 {  				reg = <0x6>; -				device_type = "ethernet-phy";  			};  			tbi1: tbi-phy@11 {  				reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts index 1e8666ccbed..1c03060dd0b 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts @@ -211,25 +211,21 @@  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts b/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts index fd4cd4da60b..bb575e28042 100644 --- a/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts +++ b/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts @@ -211,25 +211,21 @@  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/mpc866ads.dts b/arch/powerpc/boot/dts/mpc866ads.dts index bd700651f36..34c1f48b1a0 100644 --- a/arch/powerpc/boot/dts/mpc866ads.dts +++ b/arch/powerpc/boot/dts/mpc866ads.dts @@ -74,7 +74,6 @@  			#size-cells = <0>;  			PHY: ethernet-phy@f {  				reg = <0xf>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/mpc885ads.dts b/arch/powerpc/boot/dts/mpc885ads.dts index b123e9f7a5a..4e93bd961e0 100644 --- a/arch/powerpc/boot/dts/mpc885ads.dts +++ b/arch/powerpc/boot/dts/mpc885ads.dts @@ -86,17 +86,14 @@  			PHY0: ethernet-phy@0 {  				reg = <0x0>; -				device_type = "ethernet-phy";  			};  			PHY1: ethernet-phy@1 {  				reg = <0x1>; -				device_type = "ethernet-phy";  			};  			PHY2: ethernet-phy@2 {  				reg = <0x2>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/mvme5100.dts b/arch/powerpc/boot/dts/mvme5100.dts new file mode 100644 index 00000000000..1ecb341a232 --- /dev/null +++ b/arch/powerpc/boot/dts/mvme5100.dts @@ -0,0 +1,185 @@ +/* + * Device Tree Source for Motorola/Emerson MVME5100. + * + * Copyright 2013 CSC Australia Pty. Ltd. + * + * This file is licensed under the terms of the GNU General Public + * License version 2.  This program is licensed "as is" without + * any warranty of any kind, whether express or implied. + */ + +/dts-v1/; + +/ { +	model = "MVME5100"; +	compatible = "MVME5100"; +	#address-cells = <1>; +	#size-cells = <1>; + +	aliases { +		serial0 = &serial0; +		pci0 = &pci0; +	}; + +	cpus { +		#address-cells = <1>; +		#size-cells = <0>; + +		PowerPC,7410 { +			device_type = "cpu"; +			reg = <0x0>; +			/* Following required by dtc but not used */ +			d-cache-line-size = <32>; +			i-cache-line-size = <32>; +			i-cache-size = <32768>; +			d-cache-size = <32768>; +			timebase-frequency = <25000000>; +			clock-frequency = <500000000>; +			bus-frequency = <100000000>; +		}; +	}; + +	memory { +		device_type = "memory"; +		reg = <0x0 0x20000000>; +	}; + +	hawk@fef80000 { +		#address-cells = <1>; +		#size-cells = <1>; +		compatible = "hawk-bridge", "simple-bus"; +		ranges = <0x0 0xfef80000 0x10000>; +		reg = <0xfef80000 0x10000>; + +		serial0: serial@8000 { +			device_type = "serial"; +			compatible = "ns16550"; +			reg = <0x8000 0x80>; +			reg-shift = <4>; +			clock-frequency = <1843200>; +			current-speed = <9600>; +			interrupts = <1 1>; // IRQ1 Level Active Low. +			interrupt-parent = <&mpic>; +		}; + +		serial1: serial@8200 { +			device_type = "serial"; +			compatible = "ns16550"; +			reg = <0x8200 0x80>; +			reg-shift = <4>; +			clock-frequency = <1843200>; +			current-speed = <9600>; +			interrupts = <1 1>; // IRQ1 Level Active Low. +			interrupt-parent = <&mpic>; +		}; + +		mpic: interrupt-controller@f3f80000 { +			#interrupt-cells = <2>; +			#address-cells = <0>; +			device_type = "open-pic"; +			compatible = "chrp,open-pic"; +			interrupt-controller; +			reg = <0xf3f80000 0x40000>; +		}; +	}; + +	pci0: pci@feff0000 { +		#address-cells = <3>; +		#size-cells = <2>; +		#interrupt-cells = <1>; +		device_type = "pci"; +		compatible = "hawk-pci"; +		reg = <0xfec00000 0x400000>; +		8259-interrupt-acknowledge = <0xfeff0030>; +		ranges = <0x1000000 0x0        0x0 0xfe000000 0x0 0x800000 +			  0x2000000 0x0 0x80000000 0x80000000 0x0 0x74000000>; +		bus-range = <0 255>; +		clock-frequency = <33333333>; +		interrupt-parent = <&mpic>; +		interrupt-map-mask = <0xf800 0x0 0x0 0x7>; +		interrupt-map = < + +			/* +			 * This definition (IDSEL 11) duplicates the +			 * interrupts definition in the i8259 +			 * interrupt controller below. +			 * +			 * Do not change the interrupt sense/polarity from +			 * 0x2 to anything else, doing so will cause endless +			 * "spurious" i8259 interrupts to be fielded. +			 */ +			// IDSEL 11 - iPMC712 PCI/ISA Bridge +			0x5800 0x0 0x0 0x1 &mpic 0x0 0x2 +			0x5800 0x0 0x0 0x2 &mpic 0x0 0x2 +			0x5800 0x0 0x0 0x3 &mpic 0x0 0x2 +			0x5800 0x0 0x0 0x4 &mpic 0x0 0x2 + +			/* IDSEL 12 - Not Used */ + +			/* IDSEL 13 - Universe VME Bridge */ +			0x6800 0x0 0x0 0x1 &mpic 0x5 0x1 +			0x6800 0x0 0x0 0x2 &mpic 0x6 0x1 +			0x6800 0x0 0x0 0x3 &mpic 0x7 0x1 +			0x6800 0x0 0x0 0x4 &mpic 0x8 0x1 + +			/* IDSEL 14 - ENET 1 */ +			0x7000 0x0 0x0 0x1 &mpic 0x2 0x1 + +			/* IDSEL 15 - Not Used */ + +			/* IDSEL 16 - PMC Slot 1 */ +			0x8000 0x0 0x0 0x1 &mpic 0x9 0x1 +			0x8000 0x0 0x0 0x2 &mpic 0xa 0x1 +			0x8000 0x0 0x0 0x3 &mpic 0xb 0x1 +			0x8000 0x0 0x0 0x4 &mpic 0xc 0x1 + +			/* IDSEL 17 - PMC Slot 2 */ +			0x8800 0x0 0x0 0x1 &mpic 0xc 0x1 +			0x8800 0x0 0x0 0x2 &mpic 0x9 0x1 +			0x8800 0x0 0x0 0x3 &mpic 0xa 0x1 +			0x8800 0x0 0x0 0x4 &mpic 0xb 0x1 + +			/* IDSEL 18 - Not Used */ + +			/* IDSEL 19 - ENET 2 */ +			0x9800 0x0 0x0 0x1 &mpic 0xd 0x1 + +			/* IDSEL 20 - PMCSPAN (PCI-X) */ +			0xa000 0x0 0x0 0x1 &mpic 0x9 0x1 +			0xa000 0x0 0x0 0x2 &mpic 0xa 0x1 +			0xa000 0x0 0x0 0x3 &mpic 0xb 0x1 +			0xa000 0x0 0x0 0x4 &mpic 0xc 0x1 + +		>; + +		isa { +			#address-cells = <2>; +			#size-cells = <1>; +			#interrupt-cells = <2>; +			device_type = "isa"; +			compatible = "isa"; +			ranges = <0x00000001 0 0x01000000 0 0x00000000 0x00001000>; +			interrupt-parent = <&i8259>; + +			i8259: interrupt-controller@20 { +				#interrupt-cells = <2>; +				#address-cells = <0>; +				interrupts = <0 2>; +				device_type = "interrupt-controller"; +				compatible = "chrp,iic"; +				interrupt-controller; +				reg = <1 0x00000020 0x00000002 +                                       1 0x000000a0 0x00000002 +                                       1 0x000004d0 0x00000002>; +				interrupt-parent = <&mpic>; +			}; + +		}; + +	}; + +	chosen { +		linux,stdout-path = &serial0; +        }; + +}; diff --git a/arch/powerpc/boot/dts/oca4080.dts b/arch/powerpc/boot/dts/oca4080.dts new file mode 100644 index 00000000000..3d4c751d160 --- /dev/null +++ b/arch/powerpc/boot/dts/oca4080.dts @@ -0,0 +1,118 @@ +/* + * OCA4080 Device Tree Source + * + * Copyright 2014 Prodrive Technologies B.V. + * + * Based on: + * P4080DS Device Tree Source + * Copyright 2009-2011 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "fsl/p4080si-pre.dtsi" + +/ { +	model = "fsl,OCA4080"; +	compatible = "fsl,OCA4080"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	memory { +		device_type = "memory"; +	}; + +	dcsr: dcsr@f00000000 { +		ranges = <0x00000000 0xf 0x00000000 0x01008000>; +	}; + +	soc: soc@ffe000000 { +		ranges = <0x00000000 0xf 0xfe000000 0x1000000>; +		reg = <0xf 0xfe000000 0 0x00001000>; + +		i2c@118000 { +			status = "disabled"; +		}; + +		i2c@118100 { +			status = "disabled"; +		}; + +		i2c@119000 { +			status = "disabled"; +		}; + +		i2c@119100 { +			status = "disabled"; +		}; + +		usb0: usb@210000 { +			status = "disabled"; +		}; + +		usb1: usb@211000 { +			status = "disabled"; +		}; +	}; + +	rio: rapidio@ffe0c0000 { +		reg = <0xf 0xfe0c0000 0 0x11000>; + +		port1 { +			ranges = <0 0 0xc 0x20000000 0 0x10000000>; +		}; +	}; + +	lbc: localbus@ffe124000 { +		reg = <0xf 0xfe124000 0 0x1000>; +		ranges = <0 0 0xf 0xef800000 0x800000>; + +		flash@0,0 { +			compatible = "cfi-flash"; +			reg = <0 0 0x00800000>; +			bank-width = <2>; +			device-width = <2>; +		}; +	}; + +	pci0: pcie@ffe200000 { +		status = "disabled"; +	}; + +	pci1: pcie@ffe201000 { +		status = "disabled"; +	}; + +	pci2: pcie@ffe202000 { +		status = "disabled"; +	}; +}; + +/include/ "fsl/p4080si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1010rdb-pa.dts b/arch/powerpc/boot/dts/p1010rdb-pa.dts new file mode 100644 index 00000000000..767d4c03285 --- /dev/null +++ b/arch/powerpc/boot/dts/p1010rdb-pa.dts @@ -0,0 +1,23 @@ +/* + * P1010 RDB Device Tree Source + * + * Copyright 2011 Freescale Semiconductor Inc. + * + * 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. + */ + +/include/ "fsl/p1010si-pre.dtsi" + +/ { +	model = "fsl,P1010RDB"; +	compatible = "fsl,P1010RDB"; + +	/include/ "p1010rdb_32b.dtsi" +}; + +/include/ "p1010rdb.dtsi" +/include/ "p1010rdb-pa.dtsi" +/include/ "fsl/p1010si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1010rdb-pa.dtsi b/arch/powerpc/boot/dts/p1010rdb-pa.dtsi new file mode 100644 index 00000000000..434fb2d5857 --- /dev/null +++ b/arch/powerpc/boot/dts/p1010rdb-pa.dtsi @@ -0,0 +1,85 @@ +/* + * P1010 RDB Device Tree Source stub (no addresses or top-level ranges) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +&ifc_nand { +	partition@0 { +		/* This location must not be altered  */ +		/* 1MB for u-boot Bootloader Image */ +		reg = <0x0 0x00100000>; +		label = "NAND U-Boot Image"; +		read-only; +	}; + +	partition@100000 { +		/* 1MB for DTB Image */ +		reg = <0x00100000 0x00100000>; +		label = "NAND DTB Image"; +	}; + +	partition@200000 { +		/* 4MB for Linux Kernel Image */ +		reg = <0x00200000 0x00400000>; +		label = "NAND Linux Kernel Image"; +	}; + +	partition@600000 { +		/* 4MB for Compressed Root file System Image */ +		reg = <0x00600000 0x00400000>; +		label = "NAND Compressed RFS Image"; +	}; + +	partition@a00000 { +		/* 15MB for JFFS2 based Root file System */ +		reg = <0x00a00000 0x00f00000>; +		label = "NAND JFFS2 Root File System"; +	}; + +	partition@1900000 { +		/* 7MB for User Area */ +		reg = <0x01900000 0x00700000>; +		label = "NAND User area"; +	}; +}; + +&phy0 { +	interrupts = <1 1 0 0>; +}; + +&phy1 { +	interrupts = <2 1 0 0>; +}; + +&phy2 { +	interrupts = <4 1 0 0>; +}; diff --git a/arch/powerpc/boot/dts/p1010rdb_36b.dts b/arch/powerpc/boot/dts/p1010rdb-pa_36b.dts index 64776f4a465..3033371bc00 100644 --- a/arch/powerpc/boot/dts/p1010rdb_36b.dts +++ b/arch/powerpc/boot/dts/p1010rdb-pa_36b.dts @@ -38,52 +38,9 @@  	model = "fsl,P1010RDB";  	compatible = "fsl,P1010RDB"; -	memory { -		device_type = "memory"; -	}; - -	board_ifc: ifc: ifc@fffe1e000 { -		/* NOR, NAND Flashes and CPLD on board */ -		ranges = <0x0 0x0 0xf 0xee000000 0x02000000 -			  0x1 0x0 0xf 0xff800000 0x00010000 -			  0x3 0x0 0xf 0xffb00000 0x00000020>; -		reg = <0xf 0xffe1e000 0 0x2000>; -	}; - -	board_soc: soc: soc@fffe00000 { -		ranges = <0x0 0xf 0xffe00000 0x100000>; -	}; - -	pci0: pcie@fffe09000 { -		reg = <0xf 0xffe09000 0 0x1000>; -		ranges = <0x2000000 0x0 0xc0000000 0xc 0x20000000 0x0 0x20000000 -			  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>; -		pcie@0 { -			ranges = <0x2000000 0x0 0xc0000000 -				  0x2000000 0x0 0xc0000000 -				  0x0 0x20000000 - -				  0x1000000 0x0 0x0 -				  0x1000000 0x0 0x0 -				  0x0 0x100000>; -		}; -	}; - -	pci1: pcie@fffe0a000 { -		reg = <0xf 0xffe0a000 0 0x1000>; -		ranges = <0x2000000 0x0 0xc0000000 0xc 0x20000000 0x0 0x20000000 -			  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>; -		pcie@0 { -			ranges = <0x2000000 0x0 0xc0000000 -				  0x2000000 0x0 0xc0000000 -				  0x0 0x20000000 - -				  0x1000000 0x0 0x0 -				  0x1000000 0x0 0x0 -				  0x0 0x100000>; -		}; -	}; +	/include/ "p1010rdb_36b.dtsi"  };  /include/ "p1010rdb.dtsi" +/include/ "p1010rdb-pa.dtsi"  /include/ "fsl/p1010si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1010rdb-pb.dts b/arch/powerpc/boot/dts/p1010rdb-pb.dts new file mode 100644 index 00000000000..6eeb7d3185b --- /dev/null +++ b/arch/powerpc/boot/dts/p1010rdb-pb.dts @@ -0,0 +1,35 @@ +/* + * P1010 RDB Device Tree Source + * + * Copyright 2011 Freescale Semiconductor Inc. + * + * 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. + */ + +/include/ "fsl/p1010si-pre.dtsi" + +/ { +	model = "fsl,P1010RDB-PB"; +	compatible = "fsl,P1010RDB-PB"; + +	/include/ "p1010rdb_32b.dtsi" +}; + +/include/ "p1010rdb.dtsi" + +&phy0 { +	interrupts = <0 1 0 0>; +}; + +&phy1 { +	interrupts = <2 1 0 0>; +}; + +&phy2 { +	interrupts = <1 1 0 0>; +}; + +/include/ "fsl/p1010si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1010rdb-pb_36b.dts b/arch/powerpc/boot/dts/p1010rdb-pb_36b.dts new file mode 100644 index 00000000000..7ab3c907b32 --- /dev/null +++ b/arch/powerpc/boot/dts/p1010rdb-pb_36b.dts @@ -0,0 +1,58 @@ +/* + * P1010 RDB Device Tree Source (36-bit address map) + * + * Copyright 2011 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "fsl/p1010si-pre.dtsi" + +/ { +	model = "fsl,P1010RDB-PB"; +	compatible = "fsl,P1010RDB-PB"; + +	/include/ "p1010rdb_36b.dtsi" +}; + +/include/ "p1010rdb.dtsi" + +&phy0 { +	interrupts = <0 1 0 0>; +}; + +&phy1 { +	interrupts = <2 1 0 0>; +}; + +&phy2 { +	interrupts = <1 1 0 0>; +}; + +/include/ "fsl/p1010si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1010rdb.dts b/arch/powerpc/boot/dts/p1010rdb.dts deleted file mode 100644 index b868d22984e..00000000000 --- a/arch/powerpc/boot/dts/p1010rdb.dts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * P1010 RDB Device Tree Source - * - * Copyright 2011 Freescale Semiconductor Inc. - * - * 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. - */ - -/include/ "fsl/p1010si-pre.dtsi" - -/ { -	model = "fsl,P1010RDB"; -	compatible = "fsl,P1010RDB"; - -	memory { -		device_type = "memory"; -	}; - -	board_ifc: ifc: ifc@ffe1e000 { -		/* NOR, NAND Flashes and CPLD on board */ -		ranges = <0x0 0x0 0x0 0xee000000 0x02000000 -			  0x1 0x0 0x0 0xff800000 0x00010000 -			  0x3 0x0 0x0 0xffb00000 0x00000020>; -		reg = <0x0 0xffe1e000 0 0x2000>; -	}; - -	board_soc: soc: soc@ffe00000 { -		ranges = <0x0 0x0 0xffe00000 0x100000>; -	}; - -	pci0: pcie@ffe09000 { -		reg = <0 0xffe09000 0 0x1000>; -		ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 -			  0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>; -		pcie@0 { -			ranges = <0x2000000 0x0 0xa0000000 -				  0x2000000 0x0 0xa0000000 -				  0x0 0x20000000 - -				  0x1000000 0x0 0x0 -				  0x1000000 0x0 0x0 -				  0x0 0x100000>; -		}; -	}; - -	pci1: pcie@ffe0a000 { -		reg = <0 0xffe0a000 0 0x1000>; -		ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 -			  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; -		pcie@0 { -			ranges = <0x2000000 0x0 0x80000000 -				  0x2000000 0x0 0x80000000 -				  0x0 0x20000000 - -				  0x1000000 0x0 0x0 -				  0x1000000 0x0 0x0 -				  0x0 0x100000>; -		}; -	}; -}; - -/include/ "p1010rdb.dtsi" -/include/ "fsl/p1010si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1010rdb.dtsi b/arch/powerpc/boot/dts/p1010rdb.dtsi index ec7c27a6467..ea534efa790 100644 --- a/arch/powerpc/boot/dts/p1010rdb.dtsi +++ b/arch/powerpc/boot/dts/p1010rdb.dtsi @@ -69,49 +69,11 @@  		};  	}; -	nand@1,0 { +	ifc_nand: nand@1,0 {  		#address-cells = <1>;  		#size-cells = <1>;  		compatible = "fsl,ifc-nand";  		reg = <0x1 0x0 0x10000>; - -		partition@0 { -			/* This location must not be altered  */ -			/* 1MB for u-boot Bootloader Image */ -			reg = <0x0 0x00100000>; -			label = "NAND U-Boot Image"; -			read-only; -		}; - -		partition@100000 { -			/* 1MB for DTB Image */ -			reg = <0x00100000 0x00100000>; -			label = "NAND DTB Image"; -		}; - -		partition@200000 { -			/* 4MB for Linux Kernel Image */ -			reg = <0x00200000 0x00400000>; -			label = "NAND Linux Kernel Image"; -		}; - -		partition@600000 { -			/* 4MB for Compressed Root file System Image */ -			reg = <0x00600000 0x00400000>; -			label = "NAND Compressed RFS Image"; -		}; - -		partition@a00000 { -			/* 15MB for JFFS2 based Root file System */ -			reg = <0x00a00000 0x00f00000>; -			label = "NAND JFFS2 Root File System"; -		}; - -		partition@1900000 { -			/* 7MB for User Area */ -			reg = <0x01900000 0x00700000>; -			label = "NAND User area"; -		};  	};  	cpld@3,0 { @@ -193,17 +155,14 @@  	mdio@24000 {  		phy0: ethernet-phy@0 { -			interrupts = <3 1 0 0>;  			reg = <0x1>;  		};  		phy1: ethernet-phy@1 { -			interrupts = <2 1 0 0>;  			reg = <0x0>;  		};  		phy2: ethernet-phy@2 { -			interrupts = <2 1 0 0>;  			reg = <0x2>;  		}; diff --git a/arch/powerpc/boot/dts/p1010rdb_32b.dtsi b/arch/powerpc/boot/dts/p1010rdb_32b.dtsi new file mode 100644 index 00000000000..fdc19aab2f7 --- /dev/null +++ b/arch/powerpc/boot/dts/p1010rdb_32b.dtsi @@ -0,0 +1,79 @@ +/* + * P1010 RDB Device Tree Source stub (no addresses or top-level ranges) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +memory { +	device_type = "memory"; +}; + +board_ifc: ifc: ifc@ffe1e000 { +	/* NOR, NAND Flashes and CPLD on board */ +	ranges = <0x0 0x0 0x0 0xee000000 0x02000000 +		  0x1 0x0 0x0 0xff800000 0x00010000 +		  0x3 0x0 0x0 0xffb00000 0x00000020>; +	reg = <0x0 0xffe1e000 0 0x2000>; +}; + +board_soc: soc: soc@ffe00000 { +	ranges = <0x0 0x0 0xffe00000 0x100000>; +}; + +pci0: pcie@ffe09000 { +	reg = <0 0xffe09000 0 0x1000>; +	ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 +		  0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>; +	pcie@0 { +		ranges = <0x2000000 0x0 0xa0000000 +			  0x2000000 0x0 0xa0000000 +			  0x0 0x20000000 + +			  0x1000000 0x0 0x0 +			  0x1000000 0x0 0x0 +			  0x0 0x100000>; +	}; +}; + +pci1: pcie@ffe0a000 { +	reg = <0 0xffe0a000 0 0x1000>; +	ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 +		  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; +	pcie@0 { +		ranges = <0x2000000 0x0 0x80000000 +			  0x2000000 0x0 0x80000000 +			  0x0 0x20000000 + +			  0x1000000 0x0 0x0 +			  0x1000000 0x0 0x0 +			  0x0 0x100000>; +	}; +}; diff --git a/arch/powerpc/boot/dts/p1010rdb_36b.dtsi b/arch/powerpc/boot/dts/p1010rdb_36b.dtsi new file mode 100644 index 00000000000..de2fceed4f7 --- /dev/null +++ b/arch/powerpc/boot/dts/p1010rdb_36b.dtsi @@ -0,0 +1,79 @@ +/* + * P1010 RDB Device Tree Source stub (no addresses or top-level ranges) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +memory { +	device_type = "memory"; +}; + +board_ifc: ifc: ifc@fffe1e000 { +	/* NOR, NAND Flashes and CPLD on board */ +	ranges = <0x0 0x0 0xf 0xee000000 0x02000000 +		  0x1 0x0 0xf 0xff800000 0x00010000 +		  0x3 0x0 0xf 0xffb00000 0x00000020>; +	reg = <0xf 0xffe1e000 0 0x2000>; +}; + +board_soc: soc: soc@fffe00000 { +	ranges = <0x0 0xf 0xffe00000 0x100000>; +}; + +pci0: pcie@fffe09000 { +	reg = <0xf 0xffe09000 0 0x1000>; +	ranges = <0x2000000 0x0 0xc0000000 0xc 0x20000000 0x0 0x20000000 +		  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>; +	pcie@0 { +		ranges = <0x2000000 0x0 0xc0000000 +			  0x2000000 0x0 0xc0000000 +			  0x0 0x20000000 + +			  0x1000000 0x0 0x0 +			  0x1000000 0x0 0x0 +			  0x0 0x100000>; +	}; +}; + +pci1: pcie@fffe0a000 { +	reg = <0xf 0xffe0a000 0 0x1000>; +	ranges = <0x2000000 0x0 0xc0000000 0xc 0x20000000 0x0 0x20000000 +		  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>; +	pcie@0 { +		ranges = <0x2000000 0x0 0xc0000000 +			  0x2000000 0x0 0xc0000000 +			  0x0 0x20000000 + +			  0x1000000 0x0 0x0 +			  0x1000000 0x0 0x0 +			  0x0 0x100000>; +	}; +}; diff --git a/arch/powerpc/boot/dts/p1021mds.dts b/arch/powerpc/boot/dts/p1021mds.dts index 97116f198a3..76559044df4 100644 --- a/arch/powerpc/boot/dts/p1021mds.dts +++ b/arch/powerpc/boot/dts/p1021mds.dts @@ -295,13 +295,11 @@  				interrupt-parent = <&mpic>;  				interrupts = <4 1 0 0>;  				reg = <0x0>; -				device_type = "ethernet-phy";  			};  			qe_phy1: ethernet-phy@03 {  				interrupt-parent = <&mpic>;  				interrupts = <5 1 0 0>;  				reg = <0x3>; -				device_type = "ethernet-phy";  			};  			tbi-phy@11 {  				reg = <0x11>; diff --git a/arch/powerpc/boot/dts/p1022ds.dtsi b/arch/powerpc/boot/dts/p1022ds.dtsi index 873da350d01..957e0dc1dc0 100644 --- a/arch/powerpc/boot/dts/p1022ds.dtsi +++ b/arch/powerpc/boot/dts/p1022ds.dtsi @@ -146,8 +146,9 @@  			 */  		};  		rtc@68 { -			compatible = "dallas,ds1339"; +			compatible = "dallas,ds3232";  			reg = <0x68>; +			interrupts = <0x1 0x1 0 0>;  		};  		adt7461@4c {  			compatible = "adi,adt7461"; diff --git a/arch/powerpc/boot/dts/p1023rds.dts b/arch/powerpc/boot/dts/p1023rds.dts deleted file mode 100644 index beb6cb12e59..00000000000 --- a/arch/powerpc/boot/dts/p1023rds.dts +++ /dev/null @@ -1,219 +0,0 @@ -/* - * P1023 RDS Device Tree Source - * - * Copyright 2010-2011 Freescale Semiconductor Inc. - * - * Author: Roy Zang <tie-fei.zang@freescale.com> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - *     * Redistributions of source code must retain the above copyright - *       notice, this list of conditions and the following disclaimer. - *     * Redistributions in binary form must reproduce the above copyright - *       notice, this list of conditions and the following disclaimer in the - *       documentation and/or other materials provided with the distribution. - *     * Neither the name of Freescale Semiconductor nor the - *       names of its contributors may be used to endorse or promote products - *       derived from this software without specific prior written permission. - * - * - * ALTERNATIVELY, this software may be distributed under the terms of the - * GNU General Public License ("GPL") as published by the Free Software - * Foundation, either version 2 of that License or (at your option) any - * later version. - * - * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/include/ "fsl/p1023si-pre.dtsi" - -/ { -	model = "fsl,P1023"; -	compatible = "fsl,P1023RDS"; -	#address-cells = <2>; -	#size-cells = <2>; -	interrupt-parent = <&mpic>; - -	memory { -		device_type = "memory"; -	}; - -	soc: soc@ff600000 { -		ranges = <0x0 0x0 0xff600000 0x200000>; - -		i2c@3000 { -			rtc@68 { -				compatible = "dallas,ds1374"; -				reg = <0x68>; -			}; -		}; - -		spi@7000 { -			fsl_dataflash@0 { -				#address-cells = <1>; -				#size-cells = <1>; -				compatible = "atmel,at45db081d"; -				reg = <0>; -				spi-max-frequency = <40000000>; /* input clock */ -				partition@u-boot { -					/* 512KB for u-boot Bootloader Image */ -					label = "u-boot-spi"; -					reg = <0x00000000 0x00080000>; -					read-only; -				}; -				partition@dtb { -					/* 512KB for DTB Image */ -					label = "dtb-spi"; -					reg = <0x00080000 0x00080000>; -					read-only; -				}; -			}; -		}; - -		usb@22000 { -			dr_mode = "host"; -			phy_type = "ulpi"; -		}; -	}; - -	lbc: localbus@ff605000 { -		reg = <0 0xff605000 0 0x1000>; - -		/* NOR Flash, BCSR */ -		ranges = <0x0 0x0 0x0 0xee000000 0x02000000 -			  0x1 0x0 0x0 0xe0000000 0x00008000>; - -		nor@0,0 { -			#address-cells = <1>; -			#size-cells = <1>; -			compatible = "cfi-flash"; -			reg = <0x0 0x0 0x02000000>; -			bank-width = <2>; -			device-width = <1>; -			partition@0 { -				label = "ramdisk"; -				reg = <0x00000000 0x01c00000>; -			}; -			partition@1c00000 { -				label = "kernel"; -				reg = <0x01c00000 0x002e0000>; -			}; -			partiton@1ee0000 { -				label = "dtb"; -				reg = <0x01ee0000 0x00020000>; -			}; -			partition@1f00000 { -				label = "firmware"; -				reg = <0x01f00000 0x00080000>; -				read-only; -			}; -			partition@1f80000 { -				label = "u-boot"; -				reg = <0x01f80000 0x00080000>; -				read-only; -			}; -		}; - -		fpga@1,0 { -			#address-cells = <1>; -			#size-cells = <1>; -			compatible = "fsl,p1023rds-fpga"; -			reg = <1 0 0x8000>; -			ranges = <0 1 0 0x8000>; - -			bcsr@20 { -				compatible = "fsl,p1023rds-bcsr"; -				reg = <0x20 0x20>; -			}; -		}; -	}; - -	pci0: pcie@ff60a000 { -		reg = <0 0xff60a000 0 0x1000>; -		ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000 -			  0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>; -		pcie@0 { -			/* IRQ[0:3] are pulled up on board, set to active-low */ -			interrupt-map-mask = <0xf800 0 0 7>; -			interrupt-map = < -				/* IDSEL 0x0 */ -				0000 0 0 1 &mpic 0 1 0 0 -				0000 0 0 2 &mpic 1 1 0 0 -				0000 0 0 3 &mpic 2 1 0 0 -				0000 0 0 4 &mpic 3 1 0 0 -				>; -			ranges = <0x2000000 0x0 0xc0000000 -				  0x2000000 0x0 0xc0000000 -				  0x0 0x20000000 - -				  0x1000000 0x0 0x0 -				  0x1000000 0x0 0x0 -				  0x0 0x100000>; -		}; -	}; - -	board_pci1: pci1: pcie@ff609000 { -		reg = <0 0xff609000 0 0x1000>; -		ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 -			  0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>; -		pcie@0 { -			/* -			 * IRQ[4:6] only for PCIe, set to active-high, -			 * IRQ[7] is pulled up on board, set to active-low -			 */ -			interrupt-map-mask = <0xf800 0 0 7>; -			interrupt-map = < -				/* IDSEL 0x0 */ -				0000 0 0 1 &mpic 4 2 0 0 -				0000 0 0 2 &mpic 5 2 0 0 -				0000 0 0 3 &mpic 6 2 0 0 -				0000 0 0 4 &mpic 7 1 0 0 -				>; -			ranges = <0x2000000 0x0 0xa0000000 -				  0x2000000 0x0 0xa0000000 -				  0x0 0x20000000 - -				  0x1000000 0x0 0x0 -				  0x1000000 0x0 0x0 -				  0x0 0x100000>; -		}; -	}; - -	pci2: pcie@ff60b000 { -		reg = <0 0xff60b000 0 0x1000>; -		ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 -			  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; -		pcie@0 { -			/* -			 * IRQ[8:10] are pulled up on board, set to active-low -			 * IRQ[11] only for PCIe, set to active-high, -			 */ -			interrupt-map-mask = <0xf800 0 0 7>; -			interrupt-map = < -				/* IDSEL 0x0 */ -				0000 0 0 1 &mpic 8 1 0 0 -				0000 0 0 2 &mpic 9 1 0 0 -				0000 0 0 3 &mpic 10 1 0 0 -				0000 0 0 4 &mpic 11 2 0 0 -				>; -			ranges = <0x2000000 0x0 0x80000000 -				  0x2000000 0x0 0x80000000 -				  0x0 0x20000000 - -				  0x1000000 0x0 0x0 -				  0x1000000 0x0 0x0 -				  0x0 0x100000>; -		}; -	}; -}; - -/include/ "fsl/p1023si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1025rdb_32b.dts b/arch/powerpc/boot/dts/p1025rdb_32b.dts index ac5729c14ed..a2ed6280ba7 100644 --- a/arch/powerpc/boot/dts/p1025rdb_32b.dts +++ b/arch/powerpc/boot/dts/p1025rdb_32b.dts @@ -105,13 +105,11 @@  				interrupt-parent = <&mpic>;  				interrupts = <4 1 0 0>;  				reg = <0x6>; -				device_type = "ethernet-phy";  			};  			qe_phy1: ethernet-phy@03 {  				interrupt-parent = <&mpic>;  				interrupts = <5 1 0 0>;  				reg = <0x3>; -				device_type = "ethernet-phy";  			};  			tbi-phy@11 {  				reg = <0x11>; diff --git a/arch/powerpc/boot/dts/p1025twr.dts b/arch/powerpc/boot/dts/p1025twr.dts new file mode 100644 index 00000000000..9036a498790 --- /dev/null +++ b/arch/powerpc/boot/dts/p1025twr.dts @@ -0,0 +1,95 @@ +/* + * P1025 TWR Device Tree Source (32-bit address map) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "fsl/p1021si-pre.dtsi" +/ { +	model = "fsl,P1025"; +	compatible = "fsl,TWR-P1025"; + +	memory { +		device_type = "memory"; +	}; + +	lbc: localbus@ffe05000 { +		reg = <0 0xffe05000 0 0x1000>; + +		/* NOR Flash and SSD1289 */ +		ranges = <0x0 0x0 0x0 0xec000000 0x04000000 +			  0x2 0x0 0x0 0xe0000000 0x00020000>; +	}; + +	soc: soc@ffe00000 { +		ranges = <0x0 0x0 0xffe00000 0x100000>; +	}; + +	pci0: pcie@ffe09000 { +		ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 +			  0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>; +		reg = <0 0xffe09000 0 0x1000>; +		pcie@0 { +			ranges = <0x2000000 0x0 0xa0000000 +				  0x2000000 0x0 0xa0000000 +				  0x0 0x20000000 + +				  0x1000000 0x0 0x0 +				  0x1000000 0x0 0x0 +				  0x0 0x100000>; +		}; +	}; + +	pci1: pcie@ffe0a000 { +		reg = <0 0xffe0a000 0 0x1000>; +		ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 +			  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; +		pcie@0 { +			ranges = <0x2000000 0x0 0x80000000 +				  0x2000000 0x0 0x80000000 +				  0x0 0x20000000 + +				  0x1000000 0x0 0x0 +				  0x1000000 0x0 0x0 +				  0x0 0x100000>; +		}; +	}; + +	qe: qe@ffe80000 { +		ranges = <0x0 0x0 0xffe80000 0x40000>; +		reg = <0 0xffe80000 0 0x480>; +		brg-frequency = <0>; +		bus-frequency = <0>; +	}; +}; + +/include/ "p1025twr.dtsi" +/include/ "fsl/p1021si-post.dtsi" diff --git a/arch/powerpc/boot/dts/p1025twr.dtsi b/arch/powerpc/boot/dts/p1025twr.dtsi new file mode 100644 index 00000000000..8453501c256 --- /dev/null +++ b/arch/powerpc/boot/dts/p1025twr.dtsi @@ -0,0 +1,280 @@ +/* + * P1025 TWR Device Tree Source stub (no addresses or top-level ranges) + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/{ +       aliases { +		ethernet3 = &enet3; +		ethernet4 = &enet4; +       }; +}; + +&lbc { +	nor@0,0 { +		#address-cells = <1>; +		#size-cells = <1>; +		compatible = "cfi-flash"; +		reg = <0x0 0x0 0x4000000>; +		bank-width = <2>; +		device-width = <1>; + +		partition@0 { +			/* This location must not be altered  */ +			/* 256KB for Vitesse 7385 Switch firmware */ +			reg = <0x0 0x00040000>; +			label = "NOR Vitesse-7385 Firmware"; +			read-only; +		}; + +		partition@40000 { +			/* 256KB for DTB Image */ +			reg = <0x00040000 0x00040000>; +			label = "NOR DTB Image"; +		}; + +		partition@80000 { +			/* 5.5 MB for Linux Kernel Image */ +			reg = <0x00080000 0x00580000>; +			label = "NOR Linux Kernel Image"; +		}; + +		partition@400000 { +			/* 56.75MB for Root file System */ +			reg = <0x00600000 0x038c0000>; +			label = "NOR Root File System"; +		}; + +		partition@ec0000 { +			/* This location must not be altered  */ +			/* 256KB for QE ucode firmware*/ +			reg = <0x03ec0000 0x00040000>; +			label = "NOR QE microcode firmware"; +			read-only; +		}; + +		partition@f00000 { +			/* This location must not be altered  */ +			/* 512KB for u-boot Bootloader Image */ +			/* 512KB for u-boot Environment Variables */ +			reg = <0x03f00000 0x00100000>; +			label = "NOR U-Boot Image"; +			read-only; +		}; +	}; + +	/* CS2 for Display */ +	display@2,0 { +		compatible = "solomon,ssd1289fb"; +		reg = <0x2 0x0000 0x0004>; +	}; + +}; + +&soc { +	usb@22000 { +		phy_type = "ulpi"; +	}; + +	mdio@24000 { +		phy0: ethernet-phy@2 { +			interrupt-parent = <&mpic>; +			interrupts = <1 1 0 0>; +			reg = <0x2>; +		}; + +		phy1: ethernet-phy@1 { +			interrupt-parent = <&mpic>; +			interrupts = <2 1 0 0>; +			reg = <0x1>; +		}; + +		tbi0: tbi-phy@11 { +			reg = <0x11>; +			device_type = "tbi-phy"; +		}; +	}; + +	mdio@25000 { +		tbi1: tbi-phy@11 { +			reg = <0x11>; +			device_type = "tbi-phy"; +		}; +	}; + +	mdio@26000 { +		tbi2: tbi-phy@11 { +			reg = <0x11>; +			device_type = "tbi-phy"; +		}; +	}; + +	enet0: ethernet@b0000 { +		phy-handle = <&phy0>; +		phy-connection-type = "rgmii-id"; + +	}; + +	enet1: ethernet@b1000 { +		status = "disabled"; +	}; + +	enet2: ethernet@b2000 { +		phy-handle = <&phy1>; +		phy-connection-type = "rgmii-id"; +	}; + +	par_io@e0100 { +		#address-cells = <1>; +		#size-cells = <1>; +		reg = <0xe0100 0x60>; +		ranges = <0x0 0xe0100 0x60>; +		device_type = "par_io"; +		num-ports = <3>; +		pio1: ucc_pin@01 { +			pio-map = < +		/* port  pin  dir  open_drain  assignment  has_irq */ +				0x1  0x13 0x1  0x0  0x1  0x0    /* QE_MUX_MDC */ +				0x1  0x14 0x3  0x0  0x1  0x0    /* QE_MUX_MDIO */ +				0x0  0x17 0x2  0x0  0x2  0x0    /* CLK12 */ +				0x0  0x18 0x2  0x0  0x1  0x0    /* CLK9 */ +				0x0  0x7  0x1  0x0  0x2  0x0    /* ENET1_TXD0_SER1_TXD0 */ +				0x0  0x9  0x1  0x0  0x2  0x0    /* ENET1_TXD1_SER1_TXD1 */ +				0x0  0xb  0x1  0x0  0x2  0x0    /* ENET1_TXD2_SER1_TXD2 */ +				0x0  0xc  0x1  0x0  0x2  0x0    /* ENET1_TXD3_SER1_TXD3 */ +				0x0  0x6  0x2  0x0  0x2  0x0    /* ENET1_RXD0_SER1_RXD0 */ +				0x0  0xa  0x2  0x0  0x2  0x0    /* ENET1_RXD1_SER1_RXD1 */ +				0x0  0xe  0x2  0x0  0x2  0x0    /* ENET1_RXD2_SER1_RXD2 */ +				0x0  0xf  0x2  0x0  0x2  0x0    /* ENET1_RXD3_SER1_RXD3 */ +				0x0  0x5  0x1  0x0  0x2  0x0    /* ENET1_TX_EN_SER1_RTS_B */ +				0x0  0xd  0x1  0x0  0x2  0x0    /* ENET1_TX_ER */ +				0x0  0x4  0x2  0x0  0x2  0x0    /* ENET1_RX_DV_SER1_CTS_B */ +				0x0  0x8  0x2  0x0  0x2  0x0    /* ENET1_RX_ER_SER1_CD_B */ +				0x0  0x11 0x2  0x0  0x2  0x0    /* ENET1_CRS */ +				0x0  0x10 0x2  0x0  0x2  0x0>;    /* ENET1_COL */ +		}; + +		pio2: ucc_pin@02 { +			pio-map = < +		/* port  pin  dir  open_drain  assignment  has_irq */ +				0x1  0x13 0x1  0x0  0x1  0x0    /* QE_MUX_MDC */ +				0x1  0x14 0x3  0x0  0x1  0x0    /* QE_MUX_MDIO */ +				0x1  0xb  0x2  0x0  0x1  0x0    /* CLK13 */ +				0x1  0x7  0x1  0x0  0x2  0x0    /* ENET5_TXD0_SER5_TXD0 */ +				0x1  0xa  0x1  0x0  0x2  0x0    /* ENET5_TXD1_SER5_TXD1 */ +				0x1  0x6  0x2  0x0  0x2  0x0    /* ENET5_RXD0_SER5_RXD0 */ +				0x1  0x9  0x2  0x0  0x2  0x0    /* ENET5_RXD1_SER5_RXD1 */ +				0x1  0x5  0x1  0x0  0x2  0x0    /* ENET5_TX_EN_SER5_RTS_B */ +				0x1  0x4  0x2  0x0  0x2  0x0    /* ENET5_RX_DV_SER5_CTS_B */ +				0x1  0x8  0x2  0x0  0x2  0x0>;    /* ENET5_RX_ER_SER5_CD_B */ +		}; + +		pio3: ucc_pin@03 { +			pio-map = < +		/* port  pin  dir  open_drain  assignment  has_irq */ +				0x0  0x16 0x2  0x0  0x2  0x0    /* SER7_CD_B*/ +				0x0  0x12 0x2  0x0  0x2  0x0    /* SER7_CTS_B*/ +				0x0  0x13 0x1  0x0  0x2  0x0    /* SER7_RTS_B*/ +				0x0  0x14 0x2  0x0  0x2  0x0    /* SER7_RXD0*/ +				0x0  0x15 0x1  0x0  0x2  0x0>;    /* SER7_TXD0*/ +		}; + +		pio4: ucc_pin@04 { +			pio-map = < +		/* port  pin  dir  open_drain  assignment  has_irq */ +				0x1  0x0  0x2  0x0  0x2  0x0    /* SER3_CD_B*/ +				0x0  0x1c 0x2  0x0  0x2  0x0    /* SER3_CTS_B*/ +				0x0  0x1d 0x1  0x0  0x2  0x0    /* SER3_RTS_B*/ +				0x0  0x1e 0x2  0x0  0x2  0x0    /* SER3_RXD0*/ +				0x0  0x1f 0x1  0x0  0x2  0x0>;    /* SER3_TXD0*/ +		}; +	}; +}; + +&qe { +	enet3: ucc@2000 { +		device_type = "network"; +		compatible = "ucc_geth"; +		rx-clock-name = "clk12"; +		tx-clock-name = "clk9"; +		pio-handle = <&pio1>; +		phy-handle = <&qe_phy0>; +		phy-connection-type = "mii"; +	}; + +	mdio@2120 { +		qe_phy0: ethernet-phy@18 { +			interrupt-parent = <&mpic>; +			interrupts = <4 1 0 0>; +			reg = <0x18>; +			device_type = "ethernet-phy"; +		}; +		qe_phy1: ethernet-phy@19 { +			interrupt-parent = <&mpic>; +			interrupts = <5 1 0 0>; +			reg = <0x19>; +			device_type = "ethernet-phy"; +		}; +		tbi-phy@11 { +			reg = <0x11>; +			device_type = "tbi-phy"; +		}; +	}; + +	enet4: ucc@2400 { +		device_type = "network"; +		compatible = "ucc_geth"; +		rx-clock-name = "none"; +		tx-clock-name = "clk13"; +		pio-handle = <&pio2>; +		phy-handle = <&qe_phy1>; +		phy-connection-type = "rmii"; +	}; + +	serial2: ucc@2600 { +		device_type = "serial"; +		compatible = "ucc_uart"; +		port-number = <0>; +		rx-clock-name = "brg6"; +		tx-clock-name = "brg6"; +		pio-handle = <&pio3>; +	}; + +	serial3: ucc@2200 { +		device_type = "serial"; +		compatible = "ucc_uart"; +		port-number = <1>; +		rx-clock-name = "brg2"; +		tx-clock-name = "brg2"; +		pio-handle = <&pio4>; +	}; +}; diff --git a/arch/powerpc/boot/dts/ppa8548.dts b/arch/powerpc/boot/dts/ppa8548.dts index f97eceed610..27b0699ee92 100644 --- a/arch/powerpc/boot/dts/ppa8548.dts +++ b/arch/powerpc/boot/dts/ppa8548.dts @@ -110,12 +110,10 @@  		phy0: ethernet-phy@0 {  			interrupts = <7 1 0 0>;  			reg = <0x0>; -			device_type = "ethernet-phy";  		};  		phy1: ethernet-phy@1 {  			interrupts = <8 1 0 0>;  			reg = <0x1>; -			device_type = "ethernet-phy";  		};  		tbi0: tbi-phy@11 {  			reg = <0x11>; diff --git a/arch/powerpc/boot/dts/pq2fads.dts b/arch/powerpc/boot/dts/pq2fads.dts index 0bb66937674..0c525ff0c25 100644 --- a/arch/powerpc/boot/dts/pq2fads.dts +++ b/arch/powerpc/boot/dts/pq2fads.dts @@ -198,7 +198,6 @@  			};  			mdio@10d40 { -				device_type = "mdio";  				compatible = "fsl,pq2fads-mdio-bitbang",  				             "fsl,mpc8280-mdio-bitbang",  				             "fsl,cpm2-mdio-bitbang"; @@ -212,14 +211,12 @@  					interrupt-parent = <&PIC>;  					interrupts = <25 2>;  					reg = <0x0>; -					device_type = "ethernet-phy";  				};  				PHY1: ethernet-phy@1 {  					interrupt-parent = <&PIC>;  					interrupts = <25 2>;  					reg = <0x3>; -					device_type = "ethernet-phy";  				};  			}; diff --git a/arch/powerpc/boot/dts/prpmc2800.dts b/arch/powerpc/boot/dts/prpmc2800.dts index 1ee6ff43dd5..00afaacf8c8 100644 --- a/arch/powerpc/boot/dts/prpmc2800.dts +++ b/arch/powerpc/boot/dts/prpmc2800.dts @@ -73,17 +73,14 @@  		mdio {  			#address-cells = <1>;  			#size-cells = <0>; -			device_type = "mdio";  			compatible = "marvell,mv64360-mdio";  			PHY0: ethernet-phy@1 { -				device_type = "ethernet-phy";  				compatible = "broadcom,bcm5421";  				interrupts = <76>;	/* GPP 12 */  				interrupt-parent = <&PIC>;  				reg = <1>;  			};  			PHY1: ethernet-phy@3 { -				device_type = "ethernet-phy";  				compatible = "broadcom,bcm5421";  				interrupts = <76>;	/* GPP 12 */  				interrupt-parent = <&PIC>; @@ -162,7 +159,6 @@  		};  		MPSC0: mpsc@8000 { -			device_type = "serial";  			compatible = "marvell,mv64360-mpsc";  			reg = <0x8000 0x38>;  			virtual-reg = <0xf1008000>; @@ -177,7 +173,6 @@  		};  		MPSC1: mpsc@9000 { -			device_type = "serial";  			compatible = "marvell,mv64360-mpsc";  			reg = <0x9000 0x38>;  			virtual-reg = <0xf1009000>; diff --git a/arch/powerpc/boot/dts/sbc8349.dts b/arch/powerpc/boot/dts/sbc8349.dts index b1e45a8537a..fc89e00b765 100644 --- a/arch/powerpc/boot/dts/sbc8349.dts +++ b/arch/powerpc/boot/dts/sbc8349.dts @@ -173,14 +173,12 @@  					interrupt-parent = <&ipic>;  					interrupts = <20 0x8>;  					reg = <0x19>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1a {  					interrupt-parent = <&ipic>;  					interrupts = <21 0x8>;  					reg = <0x1a>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 { diff --git a/arch/powerpc/boot/dts/sbc8548-post.dtsi b/arch/powerpc/boot/dts/sbc8548-post.dtsi index 33a47e27a11..9b505c8e535 100644 --- a/arch/powerpc/boot/dts/sbc8548-post.dtsi +++ b/arch/powerpc/boot/dts/sbc8548-post.dtsi @@ -137,13 +137,11 @@  					interrupt-parent = <&mpic>;  					interrupts = <0x6 0x1>;  					reg = <0x19>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1a {  					interrupt-parent = <&mpic>;  					interrupts = <0x7 0x1>;  					reg = <0x1a>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/sbc8641d.dts b/arch/powerpc/boot/dts/sbc8641d.dts index 56bebce8784..631ede72e22 100644 --- a/arch/powerpc/boot/dts/sbc8641d.dts +++ b/arch/powerpc/boot/dts/sbc8641d.dts @@ -230,25 +230,21 @@  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <0x1f>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@0 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <0>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <10 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/stx_gp3_8560.dts b/arch/powerpc/boot/dts/stx_gp3_8560.dts index b670d03fbcd..78a72ee4820 100644 --- a/arch/powerpc/boot/dts/stx_gp3_8560.dts +++ b/arch/powerpc/boot/dts/stx_gp3_8560.dts @@ -161,13 +161,11 @@  					interrupt-parent = <&mpic>;  					interrupts = <5 4>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy4: ethernet-phy@4 {  					interrupt-parent = <&mpic>;  					interrupts = <5 4>;  					reg = <4>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/stxssa8555.dts b/arch/powerpc/boot/dts/stxssa8555.dts index 4f166b01c1b..859f854ba53 100644 --- a/arch/powerpc/boot/dts/stxssa8555.dts +++ b/arch/powerpc/boot/dts/stxssa8555.dts @@ -164,13 +164,11 @@  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x2>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@4 {  					interrupt-parent = <&mpic>;  					interrupts = <5 1>;  					reg = <0x4>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/t1040qds.dts b/arch/powerpc/boot/dts/t1040qds.dts new file mode 100644 index 00000000000..973c29c2f56 --- /dev/null +++ b/arch/powerpc/boot/dts/t1040qds.dts @@ -0,0 +1,46 @@ +/* + * T1040QDS Device Tree Source + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *	 notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *	 notice, this list of conditions and the following disclaimer in the + *	 documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *	 names of its contributors may be used to endorse or promote products + *	 derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "fsl/t104xsi-pre.dtsi" +/include/ "t104xqds.dtsi" + +/ { +	model = "fsl,T1040QDS"; +	compatible = "fsl,T1040QDS"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; +}; + +/include/ "fsl/t1040si-post.dtsi" diff --git a/arch/powerpc/boot/dts/t1042qds.dts b/arch/powerpc/boot/dts/t1042qds.dts new file mode 100644 index 00000000000..45bd0375215 --- /dev/null +++ b/arch/powerpc/boot/dts/t1042qds.dts @@ -0,0 +1,46 @@ +/* + * T1042QDS Device Tree Source + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *	 notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *	 notice, this list of conditions and the following disclaimer in the + *	 documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *	 names of its contributors may be used to endorse or promote products + *	 derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/include/ "fsl/t104xsi-pre.dtsi" +/include/ "t104xqds.dtsi" + +/ { +	model = "fsl,T1042QDS"; +	compatible = "fsl,T1042QDS"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; +}; + +/include/ "fsl/t1042si-post.dtsi" diff --git a/arch/powerpc/boot/dts/t104xqds.dtsi b/arch/powerpc/boot/dts/t104xqds.dtsi new file mode 100644 index 00000000000..234f4b596c5 --- /dev/null +++ b/arch/powerpc/boot/dts/t104xqds.dtsi @@ -0,0 +1,166 @@ +/* + * T104xQDS Device Tree Source + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *	 notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *	 notice, this list of conditions and the following disclaimer in the + *	 documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *	 names of its contributors may be used to endorse or promote products + *	 derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/ { +	model = "fsl,T1040QDS"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	ifc: localbus@ffe124000 { +		reg = <0xf 0xfe124000 0 0x2000>; +		ranges = <0 0 0xf 0xe8000000 0x08000000 +			  2 0 0xf 0xff800000 0x00010000 +			  3 0 0xf 0xffdf0000 0x00008000>; + +		nor@0,0 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "cfi-flash"; +			reg = <0x0 0x0 0x8000000>; + +			bank-width = <2>; +			device-width = <1>; +		}; + +		nand@2,0 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "fsl,ifc-nand"; +			reg = <0x2 0x0 0x10000>; +		}; + +		board-control@3,0 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "fsl,fpga-qixis"; +			reg = <3 0 0x300>; +		}; +	}; + +	memory { +		device_type = "memory"; +	}; + +	dcsr: dcsr@f00000000 { +		ranges = <0x00000000 0xf 0x00000000 0x01072000>; +	}; + +	soc: soc@ffe000000 { +		ranges = <0x00000000 0xf 0xfe000000 0x1000000>; +		reg = <0xf 0xfe000000 0 0x00001000>; + +		spi@110000 { +			flash@0 { +				#address-cells = <1>; +				#size-cells = <1>; +				compatible = "micron,n25q128a11"; +				reg = <0>; +				spi-max-frequency = <10000000>; /* input clock */ +			}; +		}; + +		i2c@118000 { +			pca9547@77 { +				compatible = "philips,pca9547"; +				reg = <0x77>; +			}; +			rtc@68 { +				compatible = "dallas,ds3232"; +				reg = <0x68>; +				interrupts = <0x1 0x1 0 0>; +			}; +		}; +	}; + +	pci0: pcie@ffe240000 { +		reg = <0xf 0xfe240000 0 0x10000>; +		ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x10000000 +			  0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>; +		pcie@0 { +			ranges = <0x02000000 0 0xe0000000 +				  0x02000000 0 0xe0000000 +				  0 0x10000000 + +				  0x01000000 0 0x00000000 +				  0x01000000 0 0x00000000 +				  0 0x00010000>; +		}; +	}; + +	pci1: pcie@ffe250000 { +		reg = <0xf 0xfe250000 0 0x10000>; +		ranges = <0x02000000 0x0 0xe0000000 0xc 0x10000000 0x0 0x10000000 +			  0x01000000 0x0 0x00000000 0xf 0xf8010000 0x0 0x00010000>; +		pcie@0 { +			ranges = <0x02000000 0 0xe0000000 +				  0x02000000 0 0xe0000000 +				  0 0x10000000 + +				  0x01000000 0 0x00000000 +				  0x01000000 0 0x00000000 +				  0 0x00010000>; +		}; +	}; + +	pci2: pcie@ffe260000 { +		reg = <0xf 0xfe260000 0 0x10000>; +		ranges = <0x02000000 0 0xe0000000 0xc 0x20000000 0 0x10000000 +			  0x01000000 0 0x00000000 0xf 0xf8020000 0 0x00010000>; +		pcie@0 { +			ranges = <0x02000000 0 0xe0000000 +				  0x02000000 0 0xe0000000 +				  0 0x10000000 + +				  0x01000000 0 0x00000000 +				  0x01000000 0 0x00000000 +				  0 0x00010000>; +		}; +	}; + +	pci3: pcie@ffe270000 { +		reg = <0xf 0xfe270000 0 0x10000>; +		ranges = <0x02000000 0 0xe0000000 0xc 0x30000000 0 0x10000000 +			  0x01000000 0 0x00000000 0xf 0xf8030000 0 0x00010000>; +		pcie@0 { +			ranges = <0x02000000 0 0xe0000000 +				  0x02000000 0 0xe0000000 +				  0 0x10000000 + +				  0x01000000 0 0x00000000 +				  0x01000000 0 0x00000000 +				  0 0x00010000>; +		}; +	}; +}; diff --git a/arch/powerpc/boot/dts/t4240emu.dts b/arch/powerpc/boot/dts/t4240emu.dts new file mode 100644 index 00000000000..bc12127a03f --- /dev/null +++ b/arch/powerpc/boot/dts/t4240emu.dts @@ -0,0 +1,281 @@ +/* + * T4240 emulator Device Tree Source + * + * Copyright 2013 Freescale Semiconductor Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *     * Redistributions of source code must retain the above copyright + *       notice, this list of conditions and the following disclaimer. + *     * Redistributions in binary form must reproduce the above copyright + *       notice, this list of conditions and the following disclaimer in the + *       documentation and/or other materials provided with the distribution. + *     * Neither the name of Freescale Semiconductor nor the + *       names of its contributors may be used to endorse or promote products + *       derived from this software without specific prior written permission. + * + * + * ALTERNATIVELY, this software may be distributed under the terms of the + * GNU General Public License ("GPL") as published by the Free Software + * Foundation, either version 2 of that License or (at your option) any + * later version. + * + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/dts-v1/; + +/include/ "fsl/e6500_power_isa.dtsi" +/ { +	compatible = "fsl,T4240"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	aliases { +		ccsr = &soc; + +		serial0 = &serial0; +		serial1 = &serial1; +		serial2 = &serial2; +		serial3 = &serial3; +		dma0 = &dma0; +		dma1 = &dma1; +	}; + +	cpus { +		#address-cells = <1>; +		#size-cells = <0>; + +		cpu0: PowerPC,e6500@0 { +			device_type = "cpu"; +			reg = <0 1>; +			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>; +		}; +		cpu1: PowerPC,e6500@2 { +			device_type = "cpu"; +			reg = <2 3>; +			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>; +		}; +		cpu2: PowerPC,e6500@4 { +			device_type = "cpu"; +			reg = <4 5>; +			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>; +		}; +		cpu3: PowerPC,e6500@6 { +			device_type = "cpu"; +			reg = <6 7>; +			next-level-cache = <&L2_1>; +			fsl,portid-mapping = <0x80000000>; +		}; + +		cpu4: PowerPC,e6500@8 { +			device_type = "cpu"; +			reg = <8 9>; +			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>; +		}; +		cpu5: PowerPC,e6500@10 { +			device_type = "cpu"; +			reg = <10 11>; +			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>; +		}; +		cpu6: PowerPC,e6500@12 { +			device_type = "cpu"; +			reg = <12 13>; +			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>; +		}; +		cpu7: PowerPC,e6500@14 { +			device_type = "cpu"; +			reg = <14 15>; +			next-level-cache = <&L2_2>; +			fsl,portid-mapping = <0x40000000>; +		}; + +		cpu8: PowerPC,e6500@16 { +			device_type = "cpu"; +			reg = <16 17>; +			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>; +		}; +		cpu9: PowerPC,e6500@18 { +			device_type = "cpu"; +			reg = <18 19>; +			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>; +		}; +		cpu10: PowerPC,e6500@20 { +			device_type = "cpu"; +			reg = <20 21>; +			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>; +		}; +		cpu11: PowerPC,e6500@22 { +			device_type = "cpu"; +			reg = <22 23>; +			next-level-cache = <&L2_3>; +			fsl,portid-mapping = <0x20000000>; +		}; +	}; +}; + +/ { +	model = "fsl,T4240QDS"; +	compatible = "fsl,T4240EMU", "fsl,T4240QDS"; +	#address-cells = <2>; +	#size-cells = <2>; +	interrupt-parent = <&mpic>; + +	ifc: localbus@ffe124000 { +		reg = <0xf 0xfe124000 0 0x2000>; +		ranges = <0 0 0xf 0xe8000000 0x08000000 +			  2 0 0xf 0xff800000 0x00010000 +			  3 0 0xf 0xffdf0000 0x00008000>; + +		nor@0,0 { +			#address-cells = <1>; +			#size-cells = <1>; +			compatible = "cfi-flash"; +			reg = <0x0 0x0 0x8000000>; + +			bank-width = <2>; +			device-width = <1>; +		}; + +	}; + +	memory { +		device_type = "memory"; +	}; + +	soc: soc@ffe000000 { +		ranges = <0x00000000 0xf 0xfe000000 0x1000000>; +		reg = <0xf 0xfe000000 0 0x00001000>; + +	}; +}; + +&ifc { +	#address-cells = <2>; +	#size-cells = <1>; +	compatible = "fsl,ifc", "simple-bus"; +	interrupts = <25 2 0 0>; +}; + +&soc { +	#address-cells = <1>; +	#size-cells = <1>; +	device_type = "soc"; +	compatible = "simple-bus"; + +	soc-sram-error { +		compatible = "fsl,soc-sram-error"; +		interrupts = <16 2 1 29>; +	}; + +	corenet-law@0 { +		compatible = "fsl,corenet-law"; +		reg = <0x0 0x1000>; +		fsl,num-laws = <32>; +	}; + +	ddr1: memory-controller@8000 { +		compatible = "fsl,qoriq-memory-controller-v4.7", +				"fsl,qoriq-memory-controller"; +		reg = <0x8000 0x1000>; +		interrupts = <16 2 1 23>; +	}; + +	ddr2: memory-controller@9000 { +		compatible = "fsl,qoriq-memory-controller-v4.7", +				"fsl,qoriq-memory-controller"; +		reg = <0x9000 0x1000>; +		interrupts = <16 2 1 22>; +	}; + +	ddr3: memory-controller@a000 { +		compatible = "fsl,qoriq-memory-controller-v4.7", +				"fsl,qoriq-memory-controller"; +		reg = <0xa000 0x1000>; +		interrupts = <16 2 1 21>; +	}; + +	cpc: l3-cache-controller@10000 { +		compatible = "fsl,t4240-l3-cache-controller", "cache"; +		reg = <0x10000 0x1000 +		       0x11000 0x1000 +		       0x12000 0x1000>; +		interrupts = <16 2 1 27 +			      16 2 1 26 +			      16 2 1 25>; +	}; + +	corenet-cf@18000 { +		compatible = "fsl,corenet2-cf", "fsl,corenet-cf"; +		reg = <0x18000 0x1000>; +		interrupts = <16 2 1 31>; +		fsl,ccf-num-csdids = <32>; +		fsl,ccf-num-snoopids = <32>; +	}; + +	iommu@20000 { +		compatible = "fsl,pamu-v1.0", "fsl,pamu"; +		reg = <0x20000 0x6000>; +		fsl,portid-mapping = <0x8000>; +		interrupts = < +			24 2 0 0 +			16 2 1 30>; +	}; + +/include/ "fsl/qoriq-mpic.dtsi" + +	guts: global-utilities@e0000 { +		compatible = "fsl,t4240-device-config", "fsl,qoriq-device-config-2.0"; +		reg = <0xe0000 0xe00>; +		fsl,has-rstcr; +		fsl,liodn-bits = <12>; +	}; + +	clockgen: global-utilities@e1000 { +		compatible = "fsl,t4240-clockgen", "fsl,qoriq-clockgen-2.0"; +		reg = <0xe1000 0x1000>; +	}; + +/include/ "fsl/qoriq-dma-0.dtsi" +/include/ "fsl/qoriq-dma-1.dtsi" + +/include/ "fsl/qoriq-i2c-0.dtsi" +/include/ "fsl/qoriq-i2c-1.dtsi" +/include/ "fsl/qoriq-duart-0.dtsi" +/include/ "fsl/qoriq-duart-1.dtsi" + +	L2_1: l2-cache-controller@c20000 { +		compatible = "fsl,t4240-l2-cache-controller"; +		reg = <0xc20000 0x40000>; +		next-level-cache = <&cpc>; +	}; +	L2_2: l2-cache-controller@c60000 { +		compatible = "fsl,t4240-l2-cache-controller"; +		reg = <0xc60000 0x40000>; +		next-level-cache = <&cpc>; +	}; +	L2_3: l2-cache-controller@ca0000 { +		compatible = "fsl,t4240-l2-cache-controller"; +		reg = <0xca0000 0x40000>; +		next-level-cache = <&cpc>; +	}; +}; diff --git a/arch/powerpc/boot/dts/t4240qds.dts b/arch/powerpc/boot/dts/t4240qds.dts index 0555976dd0f..97683f6a293 100644 --- a/arch/powerpc/boot/dts/t4240qds.dts +++ b/arch/powerpc/boot/dts/t4240qds.dts @@ -118,36 +118,95 @@  		};  		i2c@118000 { -			eeprom@51 { -				compatible = "at24,24c256"; -				reg = <0x51>; -			}; -			eeprom@52 { -				compatible = "at24,24c256"; -				reg = <0x52>; -			}; -			eeprom@53 { -				compatible = "at24,24c256"; -				reg = <0x53>; -			}; -			eeprom@54 { -				compatible = "at24,24c256"; -				reg = <0x54>; -			}; -			eeprom@55 { -				compatible = "at24,24c256"; -				reg = <0x55>; -			}; -			eeprom@56 { -				compatible = "at24,24c256"; -				reg = <0x56>; -			}; -			rtc@68 { -				compatible = "dallas,ds3232"; -				reg = <0x68>; -				interrupts = <0x1 0x1 0 0>; +			mux@77 { +				compatible = "nxp,pca9547"; +				reg = <0x77>; +				#address-cells = <1>; +				#size-cells = <0>; + +				i2c@0 { +					#address-cells = <1>; +					#size-cells = <0>; +					reg = <0>; + +					eeprom@51 { +						compatible = "at24,24c256"; +						reg = <0x51>; +					}; +					eeprom@52 { +						compatible = "at24,24c256"; +						reg = <0x52>; +					}; +					eeprom@53 { +						compatible = "at24,24c256"; +						reg = <0x53>; +					}; +					eeprom@54 { +						compatible = "at24,24c256"; +						reg = <0x54>; +					}; +					eeprom@55 { +						compatible = "at24,24c256"; +						reg = <0x55>; +					}; +					eeprom@56 { +						compatible = "at24,24c256"; +						reg = <0x56>; +					}; +					rtc@68 { +						compatible = "dallas,ds3232"; +						reg = <0x68>; +						interrupts = <0x1 0x1 0 0>; +					}; +				}; + +				i2c@2 { +					#address-cells = <1>; +					#size-cells = <0>; +					reg = <0x2>; + +					ina220@40 { +						compatible = "ti,ina220"; +						reg = <0x40>; +						shunt-resistor = <1000>; +					}; + +					ina220@41 { +						compatible = "ti,ina220"; +						reg = <0x41>; +						shunt-resistor = <1000>; +					}; + +					ina220@44 { +						compatible = "ti,ina220"; +						reg = <0x44>; +						shunt-resistor = <1000>; +					}; + +					ina220@45 { +						compatible = "ti,ina220"; +						reg = <0x45>; +						shunt-resistor = <1000>; +					}; + +					ina220@46 { +						compatible = "ti,ina220"; +						reg = <0x46>; +						shunt-resistor = <1000>; +					}; + +					ina220@47 { +						compatible = "ti,ina220"; +						reg = <0x47>; +						shunt-resistor = <1000>; +					}; +				};  			};  		}; + +		sdhc@114000 { +			voltage-ranges = <1800 1800 3300 3300>; +		};  	};  	pci0: pcie@ffe240000 { diff --git a/arch/powerpc/boot/dts/tqm8540.dts b/arch/powerpc/boot/dts/tqm8540.dts index ed264d9ae35..91cbd7acd27 100644 --- a/arch/powerpc/boot/dts/tqm8540.dts +++ b/arch/powerpc/boot/dts/tqm8540.dts @@ -172,19 +172,16 @@  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/tqm8541.dts b/arch/powerpc/boot/dts/tqm8541.dts index 92524211581..84dce2d5fc4 100644 --- a/arch/powerpc/boot/dts/tqm8541.dts +++ b/arch/powerpc/boot/dts/tqm8541.dts @@ -172,19 +172,16 @@  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/tqm8548-bigflash.dts b/arch/powerpc/boot/dts/tqm8548-bigflash.dts index 6e1ac50852a..7a333dd02d9 100644 --- a/arch/powerpc/boot/dts/tqm8548-bigflash.dts +++ b/arch/powerpc/boot/dts/tqm8548-bigflash.dts @@ -185,31 +185,26 @@  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				phy4: ethernet-phy@4 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <4>; -					device_type = "ethernet-phy";  				};  				phy5: ethernet-phy@5 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <5>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/tqm8548.dts b/arch/powerpc/boot/dts/tqm8548.dts index 161e75eac7f..c737caff10c 100644 --- a/arch/powerpc/boot/dts/tqm8548.dts +++ b/arch/powerpc/boot/dts/tqm8548.dts @@ -185,31 +185,26 @@  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@1 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				phy4: ethernet-phy@4 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <4>; -					device_type = "ethernet-phy";  				};  				phy5: ethernet-phy@5 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <5>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/tqm8555.dts b/arch/powerpc/boot/dts/tqm8555.dts index aa6ff0d3dd9..d0416a5cddd 100644 --- a/arch/powerpc/boot/dts/tqm8555.dts +++ b/arch/powerpc/boot/dts/tqm8555.dts @@ -172,19 +172,16 @@  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/tqm8560.dts b/arch/powerpc/boot/dts/tqm8560.dts index 7665a16a8b9..f9a11ebf736 100644 --- a/arch/powerpc/boot/dts/tqm8560.dts +++ b/arch/powerpc/boot/dts/tqm8560.dts @@ -174,19 +174,16 @@  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy2: ethernet-phy@2 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <2>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupt-parent = <&mpic>;  					interrupts = <8 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  				tbi0: tbi-phy@11 {  					reg = <0x11>; diff --git a/arch/powerpc/boot/dts/tqm8xx.dts b/arch/powerpc/boot/dts/tqm8xx.dts index c3dba2518d8..3d1446b99c7 100644 --- a/arch/powerpc/boot/dts/tqm8xx.dts +++ b/arch/powerpc/boot/dts/tqm8xx.dts @@ -107,7 +107,6 @@  			#size-cells = <0>;  			PHY: ethernet-phy@f {  				reg = <0xf>; -				device_type = "ethernet-phy";  			};  		}; diff --git a/arch/powerpc/boot/dts/virtex440-ml507.dts b/arch/powerpc/boot/dts/virtex440-ml507.dts index fc7073bc547..391a4e29978 100644 --- a/arch/powerpc/boot/dts/virtex440-ml507.dts +++ b/arch/powerpc/boot/dts/virtex440-ml507.dts @@ -257,6 +257,8 @@  			#size-cells = <1>;  			compatible = "xlnx,compound";  			ethernet@81c00000 { +				#address-cells = <1>; +				#size-cells = <0>;  				compatible = "xlnx,xps-ll-temac-1.01.b";  				device_type = "network";  				interrupt-parent = <&xps_intc_0>; diff --git a/arch/powerpc/boot/dts/xcalibur1501.dts b/arch/powerpc/boot/dts/xcalibur1501.dts index cc00f4ddd9a..c409cbafb12 100644 --- a/arch/powerpc/boot/dts/xcalibur1501.dts +++ b/arch/powerpc/boot/dts/xcalibur1501.dts @@ -637,14 +637,14 @@  		tlu@2f000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x2f000 0x1000>; -			interupts = <61 2 >; +			interrupts = <61 2>;  			interrupt-parent = <&mpic>;  		};  		tlu@15000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x15000 0x1000>; -			interupts = <75 2>; +			interrupts = <75 2>;  			interrupt-parent = <&mpic>;  		};  	}; diff --git a/arch/powerpc/boot/dts/xpedite5301.dts b/arch/powerpc/boot/dts/xpedite5301.dts index 53c1c6a9752..04cb410da48 100644 --- a/arch/powerpc/boot/dts/xpedite5301.dts +++ b/arch/powerpc/boot/dts/xpedite5301.dts @@ -547,14 +547,14 @@  		tlu@2f000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x2f000 0x1000>; -			interupts = <61 2 >; +			interrupts = <61 2>;  			interrupt-parent = <&mpic>;  		};  		tlu@15000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x15000 0x1000>; -			interupts = <75 2>; +			interrupts = <75 2>;  			interrupt-parent = <&mpic>;  		};  	}; diff --git a/arch/powerpc/boot/dts/xpedite5330.dts b/arch/powerpc/boot/dts/xpedite5330.dts index 21522598315..73f8620f1ce 100644 --- a/arch/powerpc/boot/dts/xpedite5330.dts +++ b/arch/powerpc/boot/dts/xpedite5330.dts @@ -583,14 +583,14 @@  		tlu@2f000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x2f000 0x1000>; -			interupts = <61 2 >; +			interrupts = <61 2>;  			interrupt-parent = <&mpic>;  		};  		tlu@15000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x15000 0x1000>; -			interupts = <75 2>; +			interrupts = <75 2>;  			interrupt-parent = <&mpic>;  		};  	}; diff --git a/arch/powerpc/boot/dts/xpedite5370.dts b/arch/powerpc/boot/dts/xpedite5370.dts index 11dbda10d75..cd0ea2b9936 100644 --- a/arch/powerpc/boot/dts/xpedite5370.dts +++ b/arch/powerpc/boot/dts/xpedite5370.dts @@ -545,14 +545,14 @@  		tlu@2f000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x2f000 0x1000>; -			interupts = <61 2 >; +			interrupts = <61 2>;  			interrupt-parent = <&mpic>;  		};  		tlu@15000 {  			compatible = "fsl,mpc8572-tlu", "fsl_tlu";  			reg = <0x15000 0x1000>; -			interupts = <75 2>; +			interrupts = <75 2>;  			interrupt-parent = <&mpic>;  		};  	}; diff --git a/arch/powerpc/boot/elf_util.c b/arch/powerpc/boot/elf_util.c index 1567a0c0f05..316552dea4d 100644 --- a/arch/powerpc/boot/elf_util.c +++ b/arch/powerpc/boot/elf_util.c @@ -26,7 +26,11 @@ int parse_elf64(void *hdr, struct elf_info *info)  	      elf64->e_ident[EI_MAG2]  == ELFMAG2	&&  	      elf64->e_ident[EI_MAG3]  == ELFMAG3	&&  	      elf64->e_ident[EI_CLASS] == ELFCLASS64	&& +#ifdef __LITTLE_ENDIAN__ +	      elf64->e_ident[EI_DATA]  == ELFDATA2LSB	&& +#else  	      elf64->e_ident[EI_DATA]  == ELFDATA2MSB	&& +#endif  	      (elf64->e_type            == ET_EXEC ||  	       elf64->e_type            == ET_DYN)	&&  	      elf64->e_machine         == EM_PPC64)) diff --git a/arch/powerpc/boot/main.c b/arch/powerpc/boot/main.c index a28f02165e9..d367a0aece2 100644 --- a/arch/powerpc/boot/main.c +++ b/arch/powerpc/boot/main.c @@ -139,18 +139,18 @@ static struct addr_range prep_initrd(struct addr_range vmlinux, void *chosen,   * edit the command line passed to vmlinux (by setting /chosen/bootargs).   * The buffer is put in it's own section so that tools may locate it easier.   */ -static char cmdline[COMMAND_LINE_SIZE] +static char cmdline[BOOT_COMMAND_LINE_SIZE]  	__attribute__((__section__("__builtin_cmdline")));  static void prep_cmdline(void *chosen)  {  	if (cmdline[0] == '\0') -		getprop(chosen, "bootargs", cmdline, COMMAND_LINE_SIZE-1); +		getprop(chosen, "bootargs", cmdline, BOOT_COMMAND_LINE_SIZE-1);  	printf("\n\rLinux/PowerPC load: %s", cmdline);  	/* If possible, edit the command line */  	if (console_ops.edit_cmdline) -		console_ops.edit_cmdline(cmdline, COMMAND_LINE_SIZE); +		console_ops.edit_cmdline(cmdline, BOOT_COMMAND_LINE_SIZE);  	printf("\n\r");  	/* Put the command line back into the devtree for the kernel */ @@ -174,7 +174,7 @@ void start(void)  	 * built-in command line wasn't set by an external tool */  	if ((loader_info.cmdline_len > 0) && (cmdline[0] == '\0'))  		memmove(cmdline, loader_info.cmdline, -			min(loader_info.cmdline_len, COMMAND_LINE_SIZE-1)); +			min(loader_info.cmdline_len, BOOT_COMMAND_LINE_SIZE-1));  	if (console_ops.open && (console_ops.open() < 0))  		exit(); diff --git a/arch/powerpc/boot/mvme5100.c b/arch/powerpc/boot/mvme5100.c new file mode 100644 index 00000000000..cb865f83c60 --- /dev/null +++ b/arch/powerpc/boot/mvme5100.c @@ -0,0 +1,27 @@ +/* + * Motorola/Emerson MVME5100 with PPCBug firmware. + * + * Author: Stephen Chivers <schivers@csc.com> + * + * Copyright 2013 CSC Australia Pty. Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + */ +#include "types.h" +#include "ops.h" +#include "io.h" + +BSS_STACK(4096); + +void platform_init(unsigned long r3, unsigned long r4, unsigned long r5) +{ +	u32			heapsize; + +	heapsize = 0x8000000 - (u32)_end; /* 128M */ +	simple_alloc_init(_end, heapsize, 32, 64); +	fdt_init(_dtb_start); +	serial_console_init(); +} diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c index 62e2f43ec1d..7ca910cb2fc 100644 --- a/arch/powerpc/boot/of.c +++ b/arch/powerpc/boot/of.c @@ -40,8 +40,8 @@ static void *of_try_claim(unsigned long size)  #ifdef DEBUG  		printf("    trying: 0x%08lx\n\r", claim_base);  #endif -		addr = (unsigned long)of_claim(claim_base, size, 0); -		if ((void *)addr != (void *)-1) +		addr = (unsigned long) of_claim(claim_base, size, 0); +		if (addr != PROM_ERROR)  			break;  	}  	if (addr == 0) diff --git a/arch/powerpc/boot/of.h b/arch/powerpc/boot/of.h index e4c68f7391c..c8c1750aba0 100644 --- a/arch/powerpc/boot/of.h +++ b/arch/powerpc/boot/of.h @@ -1,12 +1,15 @@  #ifndef _PPC_BOOT_OF_H_  #define _PPC_BOOT_OF_H_ +#include "swab.h" +  typedef void *phandle; -typedef void *ihandle; +typedef u32 ihandle;  void of_init(void *promptr);  int of_call_prom(const char *service, int nargs, int nret, ...); -void *of_claim(unsigned long virt, unsigned long size, unsigned long align); +unsigned int of_claim(unsigned long virt, unsigned long size, +	unsigned long align);  void *of_vmlinux_alloc(unsigned long size);  void of_exit(void);  void *of_finddevice(const char *name); @@ -18,4 +21,16 @@ int of_setprop(const void *phandle, const char *name, const void *buf,  /* Console functions */  void of_console_init(void); +typedef u32			__be32; + +#ifdef __LITTLE_ENDIAN__ +#define cpu_to_be32(x) swab32(x) +#define be32_to_cpu(x) swab32(x) +#else +#define cpu_to_be32(x) (x) +#define be32_to_cpu(x) (x) +#endif + +#define PROM_ERROR (-1u) +  #endif /* _PPC_BOOT_OF_H_ */ diff --git a/arch/powerpc/boot/ofconsole.c b/arch/powerpc/boot/ofconsole.c index ce0e0242445..8b754702460 100644 --- a/arch/powerpc/boot/ofconsole.c +++ b/arch/powerpc/boot/ofconsole.c @@ -18,7 +18,7 @@  #include "of.h" -static void *of_stdout_handle; +static unsigned int of_stdout_handle;  static int of_console_open(void)  { @@ -27,8 +27,10 @@ static int of_console_open(void)  	if (((devp = of_finddevice("/chosen")) != NULL)  	    && (of_getprop(devp, "stdout", &of_stdout_handle,  			   sizeof(of_stdout_handle)) -		== sizeof(of_stdout_handle))) +		== sizeof(of_stdout_handle))) { +		of_stdout_handle = be32_to_cpu(of_stdout_handle);  		return 0; +	}  	return -1;  } diff --git a/arch/powerpc/boot/oflib.c b/arch/powerpc/boot/oflib.c index b0ec9cf3eaa..46c98a47d94 100644 --- a/arch/powerpc/boot/oflib.c +++ b/arch/powerpc/boot/oflib.c @@ -16,74 +16,83 @@  #include "of.h" +typedef u32 prom_arg_t; + +/* The following structure is used to communicate with open firmware. + * All arguments in and out are in big endian format. */ +struct prom_args { +	__be32 service;	/* Address of service name string. */ +	__be32 nargs;	/* Number of input arguments. */ +	__be32 nret;	/* Number of output arguments. */ +	__be32 args[10];	/* Input/output arguments. */ +}; + +#ifdef __powerpc64__ +extern int prom(void *); +#else  static int (*prom) (void *); +#endif  void of_init(void *promptr)  { +#ifndef __powerpc64__  	prom = (int (*)(void *))promptr; +#endif  } +#define ADDR(x)		(u32)(unsigned long)(x) +  int of_call_prom(const char *service, int nargs, int nret, ...)  {  	int i; -	struct prom_args { -		const char *service; -		int nargs; -		int nret; -		unsigned int args[12]; -	} args; +	struct prom_args args;  	va_list list; -	args.service = service; -	args.nargs = nargs; -	args.nret = nret; +	args.service = cpu_to_be32(ADDR(service)); +	args.nargs = cpu_to_be32(nargs); +	args.nret = cpu_to_be32(nret);  	va_start(list, nret);  	for (i = 0; i < nargs; i++) -		args.args[i] = va_arg(list, unsigned int); +		args.args[i] = cpu_to_be32(va_arg(list, prom_arg_t));  	va_end(list);  	for (i = 0; i < nret; i++)  		args.args[nargs+i] = 0;  	if (prom(&args) < 0) -		return -1; +		return PROM_ERROR; -	return (nret > 0)? args.args[nargs]: 0; +	return (nret > 0) ? be32_to_cpu(args.args[nargs]) : 0;  }  static int of_call_prom_ret(const char *service, int nargs, int nret, -			    unsigned int *rets, ...) +			    prom_arg_t *rets, ...)  {  	int i; -	struct prom_args { -		const char *service; -		int nargs; -		int nret; -		unsigned int args[12]; -	} args; +	struct prom_args args;  	va_list list; -	args.service = service; -	args.nargs = nargs; -	args.nret = nret; +	args.service = cpu_to_be32(ADDR(service)); +	args.nargs = cpu_to_be32(nargs); +	args.nret = cpu_to_be32(nret);  	va_start(list, rets);  	for (i = 0; i < nargs; i++) -		args.args[i] = va_arg(list, unsigned int); +		args.args[i] = cpu_to_be32(va_arg(list, prom_arg_t));  	va_end(list);  	for (i = 0; i < nret; i++)  		args.args[nargs+i] = 0;  	if (prom(&args) < 0) -		return -1; +		return PROM_ERROR; -	if (rets != (void *) 0) +	if (rets != NULL)  		for (i = 1; i < nret; ++i) -			rets[i-1] = args.args[nargs+i]; +			rets[i-1] = be32_to_cpu(args.args[nargs+i]); -	return (nret > 0)? args.args[nargs]: 0; +	return (nret > 0) ? be32_to_cpu(args.args[nargs]) : 0;  }  /* returns true if s2 is a prefix of s1 */ @@ -103,7 +112,7 @@ static int string_match(const char *s1, const char *s2)   */  static int need_map = -1;  static ihandle chosen_mmu; -static phandle memory; +static ihandle memory;  static int check_of_version(void)  { @@ -132,10 +141,10 @@ static int check_of_version(void)  		printf("no mmu\n");  		return 0;  	} -	memory = (ihandle) of_call_prom("open", 1, 1, "/memory"); -	if (memory == (ihandle) -1) { -		memory = (ihandle) of_call_prom("open", 1, 1, "/memory@0"); -		if (memory == (ihandle) -1) { +	memory = of_call_prom("open", 1, 1, "/memory"); +	if (memory == PROM_ERROR) { +		memory = of_call_prom("open", 1, 1, "/memory@0"); +		if (memory == PROM_ERROR) {  			printf("no memory node\n");  			return 0;  		} @@ -144,40 +153,41 @@ static int check_of_version(void)  	return 1;  } -void *of_claim(unsigned long virt, unsigned long size, unsigned long align) +unsigned int of_claim(unsigned long virt, unsigned long size, +		      unsigned long align)  {  	int ret; -	unsigned int result; +	prom_arg_t result;  	if (need_map < 0)  		need_map = check_of_version();  	if (align || !need_map) -		return (void *) of_call_prom("claim", 3, 1, virt, size, align); +		return of_call_prom("claim", 3, 1, virt, size, align);  	ret = of_call_prom_ret("call-method", 5, 2, &result, "claim", memory,  			       align, size, virt);  	if (ret != 0 || result == -1) -		return (void *) -1; +		return  -1;  	ret = of_call_prom_ret("call-method", 5, 2, &result, "claim", chosen_mmu,  			       align, size, virt);  	/* 0x12 == coherent + read/write */  	ret = of_call_prom("call-method", 6, 1, "map", chosen_mmu,  			   0x12, size, virt, virt); -	return (void *) virt; +	return virt;  }  void *of_vmlinux_alloc(unsigned long size)  {  	unsigned long start = (unsigned long)_start, end = (unsigned long)_end; -	void *addr; +	unsigned long addr;  	void *p;  	/* With some older POWER4 firmware we need to claim the area the kernel  	 * will reside in.  Newer firmwares don't need this so we just ignore  	 * the return value.  	 */ -	addr = of_claim(start, end - start, 0); -	printf("Trying to claim from 0x%lx to 0x%lx (0x%lx) got %p\r\n", +	addr = (unsigned long) of_claim(start, end - start, 0); +	printf("Trying to claim from 0x%lx to 0x%lx (0x%lx) got %lx\r\n",  	       start, end, end - start, addr);  	p = malloc(size); @@ -197,7 +207,7 @@ void of_exit(void)   */  void *of_finddevice(const char *name)  { -	return (phandle) of_call_prom("finddevice", 1, 1, name); +	return (void *) (unsigned long) of_call_prom("finddevice", 1, 1, name);  }  int of_getprop(const void *phandle, const char *name, void *buf, diff --git a/arch/powerpc/boot/ops.h b/arch/powerpc/boot/ops.h index b3218ce451b..8aad3c55aed 100644 --- a/arch/powerpc/boot/ops.h +++ b/arch/powerpc/boot/ops.h @@ -15,7 +15,7 @@  #include "types.h"  #include "string.h" -#define	COMMAND_LINE_SIZE	512 +#define	BOOT_COMMAND_LINE_SIZE	2048  #define	MAX_PATH_LEN		256  #define	MAX_PROP_LEN		256 /* What should this be? */ diff --git a/arch/powerpc/boot/ppc_asm.h b/arch/powerpc/boot/ppc_asm.h index eb0e98be69e..35ea60c1f07 100644 --- a/arch/powerpc/boot/ppc_asm.h +++ b/arch/powerpc/boot/ppc_asm.h @@ -62,4 +62,16 @@  #define SPRN_TBRL	268  #define SPRN_TBRU	269 +#define FIXUP_ENDIAN						   \ +	tdi   0, 0, 0x48; /* Reverse endian of b . + 8		*/ \ +	b     $+36;	  /* Skip trampoline if endian is good	*/ \ +	.long 0x05009f42; /* bcl 20,31,$+4			*/ \ +	.long 0xa602487d; /* mflr r10				*/ \ +	.long 0x1c004a39; /* addi r10,r10,28			*/ \ +	.long 0xa600607d; /* mfmsr r11				*/ \ +	.long 0x01006b69; /* xori r11,r11,1			*/ \ +	.long 0xa6035a7d; /* mtsrr0 r10				*/ \ +	.long 0xa6037b7d; /* mtsrr1 r11				*/ \ +	.long 0x2400004c  /* rfid				*/ +  #endif /* _PPC64_PPC_ASM_H */ diff --git a/arch/powerpc/boot/ps3.c b/arch/powerpc/boot/ps3.c index 9954d98871d..4ec2d86d3c5 100644 --- a/arch/powerpc/boot/ps3.c +++ b/arch/powerpc/boot/ps3.c @@ -47,13 +47,13 @@ BSS_STACK(4096);   * The buffer is put in it's own section so that tools may locate it easier.   */ -static char cmdline[COMMAND_LINE_SIZE] +static char cmdline[BOOT_COMMAND_LINE_SIZE]  	__attribute__((__section__("__builtin_cmdline")));  static void prep_cmdline(void *chosen)  {  	if (cmdline[0] == '\0') -		getprop(chosen, "bootargs", cmdline, COMMAND_LINE_SIZE-1); +		getprop(chosen, "bootargs", cmdline, BOOT_COMMAND_LINE_SIZE-1);  	else  		setprop_str(chosen, "bootargs", cmdline); diff --git a/arch/powerpc/boot/pseries-head.S b/arch/powerpc/boot/pseries-head.S new file mode 100644 index 00000000000..6ef6e02e80f --- /dev/null +++ b/arch/powerpc/boot/pseries-head.S @@ -0,0 +1,8 @@ +#include "ppc_asm.h" + +	.text + +	.globl _zimage_start +_zimage_start: +	FIXUP_ENDIAN +	b _zimage_start_lib diff --git a/arch/powerpc/boot/stdio.c b/arch/powerpc/boot/stdio.c index 5b57800bbc6..a701261b178 100644 --- a/arch/powerpc/boot/stdio.c +++ b/arch/powerpc/boot/stdio.c @@ -21,6 +21,18 @@ size_t strnlen(const char * s, size_t count)  	return sc - s;  } +#ifdef __powerpc64__ + +# define do_div(n, base) ({						\ +	unsigned int __base = (base);					\ +	unsigned int __rem;						\ +	__rem = ((unsigned long long)(n)) % __base;			\ +	(n) = ((unsigned long long)(n)) / __base;			\ +	__rem;								\ +}) + +#else +  extern unsigned int __div64_32(unsigned long long *dividend,  			       unsigned int divisor); @@ -39,6 +51,8 @@ extern unsigned int __div64_32(unsigned long long *dividend,  	__rem;								\   }) +#endif /* __powerpc64__ */ +  static int skip_atoi(const char **s)  {  	int i, c; diff --git a/arch/powerpc/boot/swab.h b/arch/powerpc/boot/swab.h new file mode 100644 index 00000000000..d0e1431084c --- /dev/null +++ b/arch/powerpc/boot/swab.h @@ -0,0 +1,29 @@ +#ifndef _PPC_BOOT_SWAB_H_ +#define _PPC_BOOT_SWAB_H_ + +static inline u16 swab16(u16 x) +{ +	return  ((x & (u16)0x00ffU) << 8) | +		((x & (u16)0xff00U) >> 8); +} + +static inline u32 swab32(u32 x) +{ +	return  ((x & (u32)0x000000ffUL) << 24) | +		((x & (u32)0x0000ff00UL) <<  8) | +		((x & (u32)0x00ff0000UL) >>  8) | +		((x & (u32)0xff000000UL) >> 24); +} + +static inline u64 swab64(u64 x) +{ +	return  (u64)((x & (u64)0x00000000000000ffULL) << 56) | +		(u64)((x & (u64)0x000000000000ff00ULL) << 40) | +		(u64)((x & (u64)0x0000000000ff0000ULL) << 24) | +		(u64)((x & (u64)0x00000000ff000000ULL) <<  8) | +		(u64)((x & (u64)0x000000ff00000000ULL) >>  8) | +		(u64)((x & (u64)0x0000ff0000000000ULL) >> 24) | +		(u64)((x & (u64)0x00ff000000000000ULL) >> 40) | +		(u64)((x & (u64)0xff00000000000000ULL) >> 56); +} +#endif /* _PPC_BOOT_SWAB_H_ */ diff --git a/arch/powerpc/boot/treeboot-akebono.c b/arch/powerpc/boot/treeboot-akebono.c new file mode 100644 index 00000000000..b73174c34fe --- /dev/null +++ b/arch/powerpc/boot/treeboot-akebono.c @@ -0,0 +1,163 @@ +/* + * Copyright © 2013 Tony Breeds IBM Corporation + * Copyright © 2013 Alistair Popple IBM Corporation + * + * Based on earlier code: + *   Copyright (C) Paul Mackerras 1997. + * + *   Matt Porter <mporter@kernel.crashing.org> + *   Copyright 2002-2005 MontaVista Software Inc. + * + *   Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> + *   Copyright (c) 2003, 2004 Zultys Technologies + * + *    Copyright 2007 David Gibson, IBM Corporation. + *    Copyright 2010 Ben. Herrenschmidt, IBM Corporation. + *    Copyright © 2011 David Kleikamp IBM Corporation + * + * 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. + */ +#include <stdarg.h> +#include <stddef.h> +#include "types.h" +#include "elf.h" +#include "string.h" +#include "stdlib.h" +#include "stdio.h" +#include "page.h" +#include "ops.h" +#include "reg.h" +#include "io.h" +#include "dcr.h" +#include "4xx.h" +#include "44x.h" +#include "libfdt.h" + +BSS_STACK(4096); + +#define SPRN_PIR	0x11E	/* Processor Indentification Register */ +#define USERDATA_LEN	256	/* Length of userdata passed in by PIBS */ +#define MAX_RANKS	0x4 +#define DDR3_MR0CF	0x80010011U +#define CCTL0_MCO2	0x8000080FU +#define CCTL0_MCO3	0x80000810U +#define CCTL0_MCO4	0x80000811U +#define CCTL0_MCO5	0x80000812U +#define CCTL0_MCO6	0x80000813U + +static unsigned long long ibm_akebono_memsize; +static long long unsigned mac_addr; + +static unsigned long long ibm_akebono_detect_memsize(void) +{ +	u32 reg; +	unsigned i; +	unsigned long long memsize = 0; + +	for (i = 0; i < MAX_RANKS; i++) { +		reg = mfdcrx(DDR3_MR0CF + i); + +		if (!(reg & 1)) +			continue; + +		reg &= 0x0000f000; +		reg >>= 12; +		memsize += (0x800000ULL << reg); +	} + +	return memsize; +} + +static void ibm_akebono_fixups(void) +{ +	void *emac; +	u32 reg; + +	dt_fixup_memory(0x0ULL,  ibm_akebono_memsize); + +	/* Fixup the SD timeout frequency */ +	mtdcrx(CCTL0_MCO4, 0x1); + +	/* Disable SD high-speed mode (which seems to be broken) */ +	reg = mfdcrx(CCTL0_MCO2) & ~0x2; +	mtdcrx(CCTL0_MCO2, reg); + +	/* Set the MAC address */ +	emac = finddevice("/plb/opb/ethernet"); +	if (emac > 0) { +		if (mac_addr) +			setprop(emac, "local-mac-address", +				((u8 *) &mac_addr) + 2 , 6); +	} +} + +void platform_init(char *userdata) +{ +	unsigned long end_of_ram, avail_ram; +	u32 pir_reg; +	int node, size; +	const u32 *timebase; +	int len, i, userdata_len; +	char *end; + +	userdata[USERDATA_LEN - 1] = '\0'; +	userdata_len = strlen(userdata); +	for (i = 0; i < userdata_len - 15; i++) { +		if (strncmp(&userdata[i], "local-mac-addr=", 15) == 0) { +			if (i > 0 && userdata[i - 1] != ' ') { +				/* We've only found a substring ending +				 * with local-mac-addr so this isn't +				 * our mac address. */ +				continue; +			} + +			mac_addr = strtoull(&userdata[i + 15], &end, 16); + +			/* Remove the "local-mac-addr=<...>" from the kernel +			 * command line, including the tailing space if +			 * present. */ +			if (*end == ' ') +				end++; + +			len = ((int) end) - ((int) &userdata[i]); +			memmove(&userdata[i], end, +				userdata_len - (len + i) + 1); +			break; +		} +	} + +	loader_info.cmdline = userdata; +	loader_info.cmdline_len = 256; + +	ibm_akebono_memsize = ibm_akebono_detect_memsize(); +	if (ibm_akebono_memsize >> 32) +		end_of_ram = ~0UL; +	else +		end_of_ram = ibm_akebono_memsize; +	avail_ram = end_of_ram - (unsigned long)_end; + +	simple_alloc_init(_end, avail_ram, 128, 64); +	platform_ops.fixups = ibm_akebono_fixups; +	platform_ops.exit = ibm44x_dbcr_reset; +	pir_reg = mfspr(SPRN_PIR); + +	/* Make sure FDT blob is sane */ +	if (fdt_check_header(_dtb_start) != 0) +		fatal("Invalid device tree blob\n"); + +	node = fdt_node_offset_by_prop_value(_dtb_start, -1, "device_type", +					     "cpu", sizeof("cpu")); +	if (!node) +		fatal("Cannot find cpu node\n"); +	timebase = fdt_getprop(_dtb_start, node, "timebase-frequency", &size); +	if (timebase && (size == 4)) +		timebase_period_ns = 1000000000 / *timebase; + +	fdt_set_boot_cpuid_phys(_dtb_start, pir_reg); +	fdt_init(_dtb_start); + +	serial_console_init(); +} diff --git a/arch/powerpc/boot/util.S b/arch/powerpc/boot/util.S index 5143228e3e5..243b8497d58 100644 --- a/arch/powerpc/boot/util.S +++ b/arch/powerpc/boot/util.S @@ -45,7 +45,7 @@ udelay:  	mfspr	r4,SPRN_PVR  	srwi	r4,r4,16  	cmpwi	0,r4,1		/* 601 ? */ -	bne	.udelay_not_601 +	bne	.Ludelay_not_601  00:	li	r0,86	/* Instructions / microsecond? */  	mtctr	r0  10:	addi	r0,r0,0 /* NOP */ @@ -54,7 +54,7 @@ udelay:  	bne	00b  	blr -.udelay_not_601: +.Ludelay_not_601:  	mulli	r4,r3,1000	/* nanoseconds */  	/*  Change r4 to be the number of ticks using:  	 *	(nanoseconds + (timebase_period_ns - 1 )) / timebase_period_ns @@ -71,18 +71,32 @@ udelay:  	add	r4,r4,r5  	addi	r4,r4,-1  	divw	r4,r4,r5	/* BUS ticks */ +#ifdef CONFIG_8xx +1:	mftbu	r5 +	mftb	r6 +	mftbu	r7 +#else  1:	mfspr	r5, SPRN_TBRU  	mfspr	r6, SPRN_TBRL  	mfspr	r7, SPRN_TBRU +#endif  	cmpw	0,r5,r7  	bne	1b		/* Get [synced] base time */  	addc	r9,r6,r4	/* Compute end time */  	addze	r8,r5 +#ifdef CONFIG_8xx +2:	mftbu	r5 +#else  2:	mfspr	r5, SPRN_TBRU +#endif  	cmpw	0,r5,r8  	blt	2b  	bgt	3f +#ifdef CONFIG_8xx +	mftb	r6 +#else  	mfspr	r6, SPRN_TBRL +#endif  	cmpw	0,r6,r9  	blt	2b  3:	blr diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index cd7af841ba0..ae0f88ec4a3 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper @@ -40,6 +40,7 @@ cacheit=  binary=  gzip=.gz  pie= +format=  # cross-compilation prefix  CROSS= @@ -136,6 +137,14 @@ if [ -z "$kernel" ]; then      kernel=vmlinux  fi +elfformat="`${CROSS}objdump -p "$kernel" | grep 'file format' | awk '{print $4}'`" +case "$elfformat" in +    elf64-powerpcle)	format=elf64lppc	;; +    elf64-powerpc)	format=elf32ppc	;; +    elf32-powerpc)	format=elf32ppc	;; +esac + +  platformo=$object/"$platform".o  lds=$object/zImage.lds  ext=strip @@ -147,21 +156,33 @@ link_address='0x400000'  make_space=y  case "$platform" in -pseries) +of)      platformo="$object/of.o $object/epapr.o" +    make_space=n +    ;; +pseries) +    platformo="$object/pseries-head.o $object/of.o $object/epapr.o"      link_address='0x4000000' +    if [ "$format" != "elf32ppc" ]; then +	link_address= +	pie=-pie +    fi +    make_space=n      ;;  maple)      platformo="$object/of.o $object/epapr.o"      link_address='0x400000' +    make_space=n      ;;  pmac|chrp)      platformo="$object/of.o $object/epapr.o" +    make_space=n      ;;  coff)      platformo="$object/crt0.o $object/of.o $object/epapr.o"      lds=$object/zImage.coff.lds      link_address='0x500000' +    make_space=n      pie=      ;;  miboot|uboot*) @@ -249,6 +270,9 @@ gamecube|wii)  treeboot-currituck)      link_address='0x1000000'      ;; +treeboot-akebono) +    link_address='0x1000000' +    ;;  treeboot-iss4xx-mpic)      platformo="$object/treeboot-iss4xx.o"      ;; @@ -257,6 +281,10 @@ epapr)      link_address='0x20000000'      pie=-pie      ;; +mvme5100) +    platformo="$object/fixed-head.o $object/mvme5100.o" +    binary=y +    ;;  esac  vmz="$tmpdir/`basename \"$kernel\"`.$ext" @@ -367,7 +395,7 @@ if [ "$platform" != "miboot" ]; then      if [ -n "$link_address" ] ; then          text_start="-Ttext $link_address"      fi -    ${CROSS}ld -m elf32ppc -T $lds $text_start $pie -o "$ofile" \ +    ${CROSS}ld -m $format -T $lds $text_start $pie -o "$ofile" \  	$platformo $tmp $object/wrapper.a      rm $tmp  fi diff --git a/arch/powerpc/boot/zImage.lds.S b/arch/powerpc/boot/zImage.lds.S index 2bd8731f136..861e72109df 100644 --- a/arch/powerpc/boot/zImage.lds.S +++ b/arch/powerpc/boot/zImage.lds.S @@ -1,4 +1,10 @@ +#include <asm-generic/vmlinux.lds.h> + +#ifdef CONFIG_PPC64_BOOT_WRAPPER +OUTPUT_ARCH(powerpc:common64) +#else  OUTPUT_ARCH(powerpc:common) +#endif  ENTRY(_zimage_start)  EXTERN(_zimage_start)  SECTIONS @@ -16,7 +22,9 @@ SECTIONS      *(.rodata*)      *(.data*)      *(.sdata*) +#ifndef CONFIG_PPC64_BOOT_WRAPPER      *(.got2) +#endif    }    .dynsym : { *(.dynsym) }    .dynstr : { *(.dynstr) } @@ -27,7 +35,13 @@ SECTIONS    }    .hash : { *(.hash) }    .interp : { *(.interp) } -  .rela.dyn : { *(.rela*) } +  .rela.dyn : +  { +#ifdef CONFIG_PPC64_BOOT_WRAPPER +    __rela_dyn_start = .; +#endif +    *(.rela*) +  }    . = ALIGN(8);    .kernel:dtb : @@ -53,6 +67,15 @@ SECTIONS      _initrd_end =  .;    } +#ifdef CONFIG_PPC64_BOOT_WRAPPER +  .got : +  { +    __toc_start = .; +    *(.got) +    *(.toc) +  } +#endif +    . = ALIGN(4096);    .bss       :    {  | 
