mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
		
			
				
	
	
		
			449 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			449 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright (C) 2011, 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
 | |
|  * Copyright (C) 2011, 2012 Renesas Solutions Corp.
 | |
|  */
 | |
| #include <config.h>
 | |
| #include <asm/processor.h>
 | |
| #include <asm/macro.h>
 | |
| 
 | |
| #include <asm/processor.h>
 | |
| 
 | |
| 	.global	lowlevel_init
 | |
| 
 | |
| 	.text
 | |
| 	.align	2
 | |
| 
 | |
| lowlevel_init:
 | |
| 
 | |
| 	/* WDT */
 | |
| 	write32 WDTCSR_A, WDTCSR_D
 | |
| 
 | |
| 	/* MMU */
 | |
| 	write32 MMUCR_A, MMUCR_D
 | |
| 
 | |
| 	write32 FRQCR2_A, FRQCR2_D
 | |
| 	write32 FRQCR0_A, FRQCR0_D
 | |
| 
 | |
| 	write32 CS0CTRL_A, CS0CTRL_D
 | |
| 	write32 CS1CTRL_A, CS1CTRL_D
 | |
| 	write32 CS0CTRL2_A, CS0CTRL2_D
 | |
| 
 | |
| 	write32 CSPWCR0_A, CSPWCR0_D
 | |
| 	write32 CSPWCR1_A, CSPWCR1_D
 | |
| 	write32 CS1GDST_A, CS1GDST_D
 | |
| 
 | |
| 	# clock mode check
 | |
| 	mov.l   MODEMR, r1
 | |
| 	mov.l   @r1, r0
 | |
| 	and		#6, r0 /* Check 1 and 2 bit.*/
 | |
| 	cmp/eq  #2, r0 /* 0x02 is 533Mhz mode */
 | |
| 	bt      init_lbsc_533
 | |
| 
 | |
| init_lbsc_400:
 | |
| 
 | |
| 	write32 CSWCR0_A, CSWCR0_D_400
 | |
| 	write32 CSWCR1_A, CSWCR1_D
 | |
| 
 | |
| 	bra	init_dbsc3_400_pad
 | |
| 	nop
 | |
| 
 | |
| 	.align 2
 | |
| 
 | |
| MODEMR:		.long	0xFFCC0020
 | |
| WDTCSR_A:	.long	0xFFCC0004
 | |
| WDTCSR_D:	.long	0xA5000000
 | |
| MMUCR_A:	.long	0xFF000010
 | |
| MMUCR_D:	.long	0x00000004
 | |
| 
 | |
| FRQCR2_A:	.long	0xFFC80008
 | |
| FRQCR2_D:	.long	0x00000000
 | |
| FRQCR0_A:	.long	0xFFC80000
 | |
| FRQCR0_D:	.long	0xCF000001
 | |
| 
 | |
| CS0CTRL_A:	.long	0xFF800200
 | |
| CS0CTRL_D:	.long	0x00000020
 | |
| CS1CTRL_A:	.long	0xFF800204
 | |
| CS1CTRL_D:	.long	0x00000020
 | |
| 
 | |
| CS0CTRL2_A:	.long	0xFF800220
 | |
| CS0CTRL2_D:	.long	0x00004000
 | |
| 
 | |
| CSPWCR0_A:	.long	0xFF800280
 | |
| CSPWCR0_D:	.long	0x00000000
 | |
| CSPWCR1_A:	.long	0xFF800284
 | |
| CSPWCR1_D:	.long	0x00000000
 | |
| CS1GDST_A:	.long	0xFF8002C0
 | |
| CS1GDST_D:	.long	0x00000011
 | |
| 
 | |
| init_lbsc_533:
 | |
| 
 | |
| 	write32 CSWCR0_A, CSWCR0_D_533
 | |
| 	write32 CSWCR1_A, CSWCR1_D
 | |
| 
 | |
| 	bra	init_dbsc3_533_pad
 | |
| 	nop
 | |
| 
 | |
| 	.align 2
 | |
| 
 | |
| CSWCR0_A:	.long	0xFF800230
 | |
| CSWCR0_D_533:	.long	0x01120104
 | |
| CSWCR0_D_400:	.long	0x02120114
 | |
| CSWCR1_A:	.long	0xFF800234
 | |
| CSWCR1_D:	.long	0x077F077F
 | |
| 
 | |
| init_dbsc3_400_pad:
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D
 | |
| 	wait_timer	WAIT_200US_400
 | |
| 
 | |
| 	write32 DBPDCNT0_A,	DBPDCNT0_D_400
 | |
| 	write32 DBPDCNT3_A,	DBPDCNT3_D0
 | |
| 	write32 DBPDCNT1_A,	DBPDCNT1_D
 | |
| 
 | |
| 	write32 DBPDCNT3_A,	DBPDCNT3_D1
 | |
| 	wait_timer WAIT_32MCLK
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D2
 | |
| 	wait_timer WAIT_100US_400
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D3
 | |
| 	wait_timer WAIT_16MCLK
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D4
 | |
| 	wait_timer WAIT_200US_400
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D5
 | |
| 	wait_timer WAIT_1MCLK
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D6
 | |
| 	wait_timer WAIT_10KMCLK
 | |
| 
 | |
| 	bra init_dbsc3_ctrl_400
 | |
| 	nop
 | |
| 
 | |
| 	.align 2
 | |
| 
 | |
| init_dbsc3_533_pad:
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D
 | |
| 	wait_timer	WAIT_200US_533
 | |
| 
 | |
| 	write32 DBPDCNT0_A,	DBPDCNT0_D_533
 | |
| 	write32 DBPDCNT3_A,	DBPDCNT3_D0
 | |
| 	write32 DBPDCNT1_A,	DBPDCNT1_D
 | |
| 
 | |
| 	write32 DBPDCNT3_A,	DBPDCNT3_D1
 | |
| 	wait_timer WAIT_32MCLK
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D2
 | |
| 	wait_timer WAIT_100US_533
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D3
 | |
| 	wait_timer WAIT_16MCLK
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D4
 | |
| 	wait_timer WAIT_200US_533
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D5
 | |
| 	wait_timer WAIT_1MCLK
 | |
| 
 | |
| 	write32	DBPDCNT3_A,	DBPDCNT3_D6
 | |
| 	wait_timer	WAIT_10KMCLK
 | |
| 
 | |
| 	bra init_dbsc3_ctrl_533
 | |
| 	nop
 | |
| 
 | |
| 	.align 2
 | |
| 
 | |
| WAIT_200US_400:	.long	40000
 | |
| WAIT_200US_533:	.long	53300
 | |
| WAIT_100US_400:	.long	20000
 | |
| WAIT_100US_533:	.long	26650
 | |
| WAIT_32MCLK:	.long	32
 | |
| WAIT_16MCLK:	.long	16
 | |
| WAIT_1MCLK:		.long	1
 | |
| WAIT_10KMCLK:	.long	10000
 | |
| 
 | |
| DBPDCNT0_A:		.long	0xFE800200
 | |
| DBPDCNT0_D_533:	.long	0x00010245
 | |
| DBPDCNT0_D_400:	.long	0x00010235
 | |
| DBPDCNT1_A:		.long	0xFE800204
 | |
| DBPDCNT1_D:		.long	0x00000014
 | |
| DBPDCNT3_A:		.long	0xFE80020C
 | |
| DBPDCNT3_D:		.long	0x80000000
 | |
| DBPDCNT3_D0:	.long	0x800F0000
 | |
| DBPDCNT3_D1:	.long	0x800F1000
 | |
| DBPDCNT3_D2:	.long	0x820F1000
 | |
| DBPDCNT3_D3:	.long	0x860F1000
 | |
| DBPDCNT3_D4:	.long	0x870F1000
 | |
| DBPDCNT3_D5:	.long	0x870F3000
 | |
| DBPDCNT3_D6:	.long	0x870F7000
 | |
| 
 | |
| init_dbsc3_ctrl_400:
 | |
| 
 | |
| 	write32 DBKIND_A, DBKIND_D
 | |
| 	write32 DBCONF_A, DBCONF_D
 | |
| 
 | |
| 	write32 DBTR0_A,	DBTR0_D_400
 | |
| 	write32 DBTR1_A,	DBTR1_D_400
 | |
| 	write32 DBTR2_A,	DBTR2_D
 | |
| 	write32 DBTR3_A,	DBTR3_D_400
 | |
| 	write32 DBTR4_A,	DBTR4_D_400
 | |
| 	write32 DBTR5_A,	DBTR5_D_400
 | |
| 	write32 DBTR6_A,	DBTR6_D_400
 | |
| 	write32 DBTR7_A,	DBTR7_D
 | |
| 	write32 DBTR8_A,	DBTR8_D_400
 | |
| 	write32 DBTR9_A,	DBTR9_D
 | |
| 	write32 DBTR10_A,	DBTR10_D_400
 | |
| 	write32 DBTR11_A,	DBTR11_D
 | |
| 	write32 DBTR12_A,	DBTR12_D_400
 | |
| 	write32 DBTR13_A,	DBTR13_D_400
 | |
| 	write32 DBTR14_A,	DBTR14_D
 | |
| 	write32 DBTR15_A,	DBTR15_D
 | |
| 	write32 DBTR16_A,	DBTR16_D_400
 | |
| 	write32 DBTR17_A,	DBTR17_D_400
 | |
| 	write32 DBTR18_A,	DBTR18_D_400
 | |
| 
 | |
| 	write32	DBBL_A,	DBBL_D
 | |
| 	write32	DBRNK0_A,	DBRNK0_D
 | |
| 
 | |
| 	write32 DBCMD_A,	DBCMD_D0_400
 | |
| 	write32 DBCMD_A,	DBCMD_D1
 | |
| 	write32 DBCMD_A,	DBCMD_D2
 | |
| 	write32 DBCMD_A,	DBCMD_D3
 | |
| 	write32 DBCMD_A,	DBCMD_D4
 | |
| 	write32 DBCMD_A,	DBCMD_D5_400
 | |
| 	write32 DBCMD_A,	DBCMD_D6
 | |
| 	write32 DBCMD_A,	DBCMD_D7
 | |
| 	write32 DBCMD_A,	DBCMD_D8
 | |
| 	write32 DBCMD_A,	DBCMD_D9_400
 | |
| 	write32 DBCMD_A,	DBCMD_D10
 | |
| 	write32 DBCMD_A,	DBCMD_D11
 | |
| 	write32 DBCMD_A,	DBCMD_D12
 | |
| 
 | |
| 	write32	DBRFCNF0_A,	DBRFCNF0_D
 | |
| 	write32	DBRFCNF1_A,	DBRFCNF1_D_400
 | |
| 	write32	DBRFCNF2_A,	DBRFCNF2_D
 | |
| 	write32	DBRFEN_A,	DBRFEN_D
 | |
| 	write32	DBACEN_A,	DBACEN_D
 | |
| 	write32	DBACEN_A,	DBACEN_D
 | |
| 
 | |
| 	/* Dummy read */
 | |
| 	mov.l DBWAIT_A, r1
 | |
| 	synco
 | |
| 	mov.l @r1, r0
 | |
| 	synco
 | |
| 
 | |
| 	/* Dummy read */
 | |
| 	mov.l SDRAM_A, r1
 | |
| 	synco
 | |
| 	mov.l @r1, r0
 | |
| 	synco
 | |
| 
 | |
| 	/* need sleep 186A0 */
 | |
| 
 | |
| 	bra	finish_init_sh7734
 | |
| 	nop
 | |
| 
 | |
| 	.align 2
 | |
| 
 | |
| init_dbsc3_ctrl_533:
 | |
| 
 | |
| 	write32 DBKIND_A, DBKIND_D
 | |
| 	write32 DBCONF_A, DBCONF_D
 | |
| 
 | |
| 	write32 DBTR0_A,	DBTR0_D_533
 | |
| 	write32 DBTR1_A,	DBTR1_D_533
 | |
| 	write32 DBTR2_A,	DBTR2_D
 | |
| 	write32 DBTR3_A,	DBTR3_D_533
 | |
| 	write32 DBTR4_A,	DBTR4_D_533
 | |
| 	write32 DBTR5_A,	DBTR5_D_533
 | |
| 	write32 DBTR6_A,	DBTR6_D_533
 | |
| 	write32 DBTR7_A,	DBTR7_D
 | |
| 	write32 DBTR8_A,	DBTR8_D_533
 | |
| 	write32 DBTR9_A,	DBTR9_D
 | |
| 	write32 DBTR10_A,	DBTR10_D_533
 | |
| 	write32 DBTR11_A,	DBTR11_D
 | |
| 	write32 DBTR12_A,	DBTR12_D_533
 | |
| 	write32 DBTR13_A,	DBTR13_D_533
 | |
| 	write32 DBTR14_A,	DBTR14_D
 | |
| 	write32 DBTR15_A,	DBTR15_D
 | |
| 	write32 DBTR16_A,	DBTR16_D_533
 | |
| 	write32 DBTR17_A,	DBTR17_D_533
 | |
| 	write32 DBTR18_A,	DBTR18_D_533
 | |
| 
 | |
| 	write32	DBBL_A,	DBBL_D
 | |
| 	write32	DBRNK0_A,	DBRNK0_D
 | |
| 
 | |
| 	write32 DBCMD_A,	DBCMD_D0_533
 | |
| 	write32 DBCMD_A,	DBCMD_D1
 | |
| 	write32 DBCMD_A,	DBCMD_D2
 | |
| 	write32 DBCMD_A,	DBCMD_D3
 | |
| 	write32 DBCMD_A,	DBCMD_D4
 | |
| 	write32 DBCMD_A,	DBCMD_D5_533
 | |
| 	write32 DBCMD_A,	DBCMD_D6
 | |
| 	write32 DBCMD_A,	DBCMD_D7
 | |
| 	write32 DBCMD_A,	DBCMD_D8
 | |
| 	write32 DBCMD_A,	DBCMD_D9_533
 | |
| 	write32 DBCMD_A,	DBCMD_D10
 | |
| 	write32 DBCMD_A,	DBCMD_D11
 | |
| 	write32 DBCMD_A,	DBCMD_D12
 | |
| 
 | |
| 	write32	DBRFCNF0_A,	DBRFCNF0_D
 | |
| 	write32	DBRFCNF1_A,	DBRFCNF1_D_533
 | |
| 	write32	DBRFCNF2_A,	DBRFCNF2_D
 | |
| 	write32	DBRFEN_A,	DBRFEN_D
 | |
| 	write32	DBACEN_A,	DBACEN_D
 | |
| 	write32	DBACEN_A,	DBACEN_D
 | |
| 
 | |
| 	/* Dummy read */
 | |
| 	mov.l DBWAIT_A, r1
 | |
| 	synco
 | |
| 	mov.l @r1, r0
 | |
| 	synco
 | |
| 
 | |
| 	/* Dummy read */
 | |
| 	mov.l SDRAM_A, r1
 | |
| 	synco
 | |
| 	mov.l @r1, r0
 | |
| 	synco
 | |
| 
 | |
| 	/* need sleep 186A0 */
 | |
| 
 | |
| 	bra	finish_init_sh7734
 | |
| 	nop
 | |
| 
 | |
| 	.align 2
 | |
| 
 | |
| DBKIND_A:	.long	0xFE800020
 | |
| DBKIND_D:	.long	0x00000005
 | |
| DBCONF_A:	.long	0xFE800024
 | |
| DBCONF_D:	.long	0x0D020A01
 | |
| 
 | |
| DBTR0_A:	.long	0xFE800040
 | |
| DBTR0_D_533:.long	0x00000004
 | |
| DBTR0_D_400:.long	0x00000003
 | |
| DBTR1_A:	.long	0xFE800044
 | |
| DBTR1_D_533:.long	0x00000003
 | |
| DBTR1_D_400:.long	0x00000002
 | |
| DBTR2_A:	.long	0xFE800048
 | |
| DBTR2_D:	.long	0x00000000
 | |
| DBTR3_A:	.long	0xFE800050
 | |
| DBTR3_D_533:.long	0x00000004
 | |
| DBTR3_D_400:.long	0x00000003
 | |
| 
 | |
| DBTR4_A:	.long	0xFE800054
 | |
| DBTR4_D_533:.long	0x00050004
 | |
| DBTR4_D_400:.long	0x00050003
 | |
| 
 | |
| DBTR5_A:	.long	0xFE800058
 | |
| DBTR5_D_533:.long	0x0000000F
 | |
| DBTR5_D_400:.long	0x0000000B
 | |
| 
 | |
| DBTR6_A:	.long	0xFE80005C
 | |
| DBTR6_D_533:.long	0x0000000B
 | |
| DBTR6_D_400:.long	0x00000008
 | |
| 
 | |
| DBTR7_A:	.long	0xFE800060
 | |
| DBTR7_D:	.long	0x00000002
 | |
| 
 | |
| DBTR8_A:	.long	0xFE800064
 | |
| DBTR8_D_533:.long	0x0000000D
 | |
| DBTR8_D_400:.long	0x0000000A
 | |
| 
 | |
| DBTR9_A:	.long	0xFE800068
 | |
| DBTR9_D:	.long	0x00000002
 | |
| 
 | |
| DBTR10_A:	.long	0xFE80006C
 | |
| DBTR10_D_533:.long	0x00000004
 | |
| DBTR10_D_400:.long	0x00000003
 | |
| 
 | |
| DBTR11_A:	.long	0xFE800070
 | |
| DBTR11_D:	.long	0x00000008
 | |
| 
 | |
| DBTR12_A:	.long	0xFE800074
 | |
| DBTR12_D_533:.long	0x00000009
 | |
| DBTR12_D_400:.long	0x00000008
 | |
| 
 | |
| DBTR13_A:	.long	0xFE800078
 | |
| DBTR13_D_533:.long	0x00000022
 | |
| DBTR13_D_400:.long	0x0000001A
 | |
| 
 | |
| DBTR14_A:	.long	0xFE80007C
 | |
| DBTR14_D:	.long	0x00070002
 | |
| 
 | |
| DBTR15_A:	.long	0xFE800080
 | |
| DBTR15_D:	.long	0x00000003
 | |
| 
 | |
| DBTR16_A:	.long	0xFE800084
 | |
| DBTR16_D_533:.long	0x120A1001
 | |
| DBTR16_D_400:.long	0x12091001
 | |
| 
 | |
| DBTR17_A:	.long	0xFE800088
 | |
| DBTR17_D_533:.long	0x00040000
 | |
| DBTR17_D_400:.long	0x00030000
 | |
| 
 | |
| DBTR18_A:	.long	0xFE80008C
 | |
| DBTR18_D_533:.long	0x02010200
 | |
| DBTR18_D_400:.long	0x02000207
 | |
| 
 | |
| DBBL_A:	.long	0xFE8000B0
 | |
| DBBL_D:	.long	0x00000000
 | |
| 
 | |
| DBRNK0_A:		.long	0xFE800100
 | |
| DBRNK0_D:		.long	0x00000001
 | |
| 
 | |
| DBCMD_A:		.long	0xFE800018
 | |
| DBCMD_D0_533:	.long	0x1100006B
 | |
| DBCMD_D0_400:	.long	0x11000050
 | |
| DBCMD_D1:		.long	0x0B000000
 | |
| DBCMD_D2:		.long	0x2A004000
 | |
| DBCMD_D3:		.long	0x2B006000
 | |
| DBCMD_D4:		.long	0x29002044
 | |
| DBCMD_D5_533:	.long	0x28000743
 | |
| DBCMD_D5_400:	.long	0x28000533
 | |
| DBCMD_D6:		.long	0x0B000000
 | |
| DBCMD_D7:		.long	0x0C000000
 | |
| DBCMD_D8:		.long	0x0C000000
 | |
| DBCMD_D9_533:	.long	0x28000643
 | |
| DBCMD_D9_400:	.long	0x28000433
 | |
| DBCMD_D10:		.long	0x000000C8
 | |
| DBCMD_D11:		.long	0x290023C4
 | |
| DBCMD_D12:		.long	0x29002004
 | |
| 
 | |
| DBRFCNF0_A:		.long	0xFE8000E0
 | |
| DBRFCNF0_D:		.long	0x000001FF
 | |
| DBRFCNF1_A:		.long	0xFE8000E4
 | |
| DBRFCNF1_D_533:	.long	0x00000805
 | |
| DBRFCNF1_D_400:	.long	0x00000618
 | |
| 
 | |
| DBRFCNF2_A:		.long	0xFE8000E8
 | |
| DBRFCNF2_D:		.long	0x00000000
 | |
| 
 | |
| DBRFEN_A:		.long	0xFE800014
 | |
| DBRFEN_D:		.long	0x00000001
 | |
| 
 | |
| DBACEN_A:		.long	0xFE800010
 | |
| DBACEN_D:		.long	0x00000001
 | |
| 
 | |
| DBWAIT_A:		.long	0xFE80001C
 | |
| SDRAM_A:		.long	0x0C000000
 | |
| 
 | |
| finish_init_sh7734:
 | |
| 	write32 CCR_A,  CCR_D
 | |
| 
 | |
| 	stc sr, r0
 | |
| 	mov.l  SR_MASK_D, r1
 | |
| 	and r1, r0
 | |
| 	ldc r0, sr
 | |
| 
 | |
| 	rts
 | |
| 	nop
 | |
| 
 | |
| 	.align  2
 | |
| 
 | |
| CCR_A:	.long	0xFF00001C
 | |
| CCR_D:	.long	0x0000090B
 | |
| SR_MASK_D:	.long	0xEFFFFF0F
 |