⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pxavoltage.s

📁 u-boot-1.1.6 源码包
💻 S
字号:
/* * (C) Copyright 2004 * Robert Whaley, Applied Data Systems, Inc. rwhaley@applieddata.net * * See file CREDITS for list of people who contributed to this * project. * * 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 */#include <asm/arch/pxa-regs.h>#define LTC1663_ADDR    0x20#define LTC1663_SY	0x01	/* Sync ACK */#define LTC1663_SD	0x04	/* shutdown */#define LTC1663_BG	0x04	/* Internal Voltage Ref */#define VOLT_1_55         18    /* DAC value for 1.55V */		.global	initPXAvoltage@ Set the voltage to 1.55V early in the boot process so we can run@ at a high clock speed and boot quickly.  Note that this is necessary@ because the reset button does not reset the CPU voltage, so if the@ voltage was low (say 0.85V) then the CPU would crash without this@ routine@ This routine clobbers r0-r4initializei2c:		ldr	r2, =CKEN		ldr	r3, [r2]		orr	r3, r3, #CKEN15_PWRI2C		str	r3, [r2]		ldr	r2, =PCFR		ldr	r3, [r2]		orr	r3, r3, #PCFR_PI2C_EN		str	r3, [r2]		/* delay for about 250msec		 */		ldr	r3, =OSCR		mov	r2, #0		str	r2, [r3]		ldr	r1, =0xC00001:		ldr	r2, [r3]		cmp	r1, r2		bgt	1b		ldr	r0, =PWRICR		ldr	r1, [r0]		bic	r1, r1, #(ICR_MA | ICR_START | ICR_STOP)		str	r1, [r0]		orr	r1, r1, #ICR_UR		str	r1, [r0]		ldr	r2, =PWRISR		ldr	r3, =0x7ff		str	r3, [r2]		bic	r1, r1, #ICR_UR		str	r1, [r0]		mov	r1, #(ICR_GCD | ICR_SCLE)		str	r1, [r0]		orr	r1, r1, #ICR_IUE		str	r1, [r0]		orr	r1, r1, #ICR_FM		str	r1, [r0]		/* delay for about 1msec		 */		ldr	r3, =OSCR		mov	r2, #0		str	r2, [r3]		ldr	r1, =0xC001:		ldr	r2, [r3]		cmp	r1, r2		bgt	1b		mov	pc, lrsendbytei2c:		ldr	r3, =PWRIDBR		str	r0, [r3]		ldr	r3, =PWRICR		ldr	r0, [r3]		orr	r0, r0, r1		bic	r0, r0, r2		str	r0, [r3]		orr	r0, r0, #ICR_TB		str	r0, [r3]		mov	r2, #0x100000waitfortxemptyi2c:		ldr	r0, =PWRISR		ldr	r1, [r0]		/* take it from the top if we don't get empty after a while */		subs	r2, r2, #1		moveq	lr, r4		beq	initPXAvoltage		tst	r1, #ISR_ITE		beq	waitfortxemptyi2c		orr	r1, r1, #ISR_ITE		str	r1, [r0]		mov	pc, lrinitPXAvoltage:		mov	r4, lr		bl	setleds		bl	initializei2c		bl	setleds		/* now send the real message to set the correct voltage */		ldr	r0, =LTC1663_ADDR		mov	r0, r0, LSL #1		mov	r1, #ICR_START		ldr	r2, =(ICR_STOP | ICR_ALDIE | ICR_ACKNAK)		bl	sendbytei2c		bl	setleds		mov	r0, #LTC1663_BG		mov	r1, #0		mov	r2, #(ICR_STOP | ICR_START)		bl	sendbytei2c		bl	setleds		ldr	r0, =VOLT_1_55		and	r0, r0, #0xff		mov	r1, #0		mov	r2, #(ICR_STOP | ICR_START)		bl	sendbytei2c		bl	setleds		ldr	r0, =VOLT_1_55		mov	r0, r0, ASR #8		and	r0, r0, #0xff		mov	r1, #ICR_STOP		mov	r2, #ICR_START		bl	sendbytei2c		bl	setleds		@ delay a little for the volatage to stablize		ldr	r3, =OSCR		mov	r2, #0		str	r2, [r3]		ldr	r1, =0xC01:		ldr	r2, [r3]		cmp	r1, r2		bgt	1b		mov	pc, r4setleds:	mov		pc, lr	ldr		r5, =0x40e00058	ldr		r3, [r5]	bic		r3, r3, #0x3	str		r3, [r5]	ldr		r5, =0x40e0000c	ldr		r3, [r5]	orr		r3, r3, #0x00010000	str		r3, [r5]	@ inner loop	mov		r0, #0x21:	ldr		r5, =0x40e00018	mov		r3, #0x00010000	str		r3, [r5]	@ outer loop	mov		r3, #0x00F000002:	subs		r3, r3, #1	bne		2b	ldr		r5, =0x40e00024	mov		r3, #0x00010000	str		r3, [r5]	@ outer loop	mov		r3, #0x00F000003:	subs		r3, r3, #1	bne		3b	subs		r0, r0, #1	bne		1b	mov		pc, lr

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -