mirror of
				https://github.com/linux-sunxi/u-boot-sunxi.git
				synced 2024-02-12 11:16:03 +08:00 
			
		
		
		
	In chapter 'Advisory 2.1 USB Host Clock Drift Causes USB Spec Non-compliance in Certain Configurations' of the TI Errata it is recommended to use certain div/mult values for the DPLL5 clock setup. So far u-boot used the old 34xx values, so I added the errata recommended values specificly for 36xx init only. Also, the FSEL registers exist no longer, so removed them from init. Tested this on a AM3703 board with 19.2MHz oscillator, which previously couldnt lock the dpll5 (kernel complained). As a consequence the EHCI USB port wasnt usable in U-Boot and kernel. With this patch, kernel panics disappear and USB working fine in u-boot and kernel. Signed-off-by: Andreas Naumann <anaumann@ultratronik.de> [trini: Add extern to <asm/arch-omap3/clock.h> Signed-off-by: Tom Rini <trini@ti.com>
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * (C) Copyright 2006-2008
 | 
						|
 * Texas Instruments, <www.ti.com>
 | 
						|
 * Richard Woodruff <r-woodruff2@ti.com>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier:	GPL-2.0+
 | 
						|
 */
 | 
						|
#ifndef _CLOCKS_H_
 | 
						|
#define _CLOCKS_H_
 | 
						|
 | 
						|
#define LDELAY		12000000
 | 
						|
 | 
						|
#define S12M		12000000
 | 
						|
#define S13M		13000000
 | 
						|
#define S19_2M		19200000
 | 
						|
#define S24M		24000000
 | 
						|
#define S26M		26000000
 | 
						|
#define S38_4M		38400000
 | 
						|
 | 
						|
#define FCK_IVA2_ON	0x00000001
 | 
						|
#define FCK_CORE1_ON	0x03fffe29
 | 
						|
#define ICK_CORE1_ON	0x3ffffffb
 | 
						|
#define ICK_CORE2_ON	0x0000001f
 | 
						|
#define FCK_WKUP_ON	0x000000e9
 | 
						|
#define ICK_WKUP_ON	0x0000003f
 | 
						|
#define FCK_DSS_ON	0x00000005
 | 
						|
#define ICK_DSS_ON	0x00000001
 | 
						|
#define FCK_CAM_ON	0x00000001
 | 
						|
#define ICK_CAM_ON	0x00000001
 | 
						|
#define FCK_PER_ON	0x0003ffff
 | 
						|
#define ICK_PER_ON	0x0003ffff
 | 
						|
 | 
						|
/* Used to index into DPLL parameter tables */
 | 
						|
typedef struct {
 | 
						|
	unsigned int m;
 | 
						|
	unsigned int n;
 | 
						|
	unsigned int fsel;
 | 
						|
	unsigned int m2;
 | 
						|
} dpll_param;
 | 
						|
 | 
						|
struct dpll_per_36x_param {
 | 
						|
	unsigned int sys_clk;
 | 
						|
	unsigned int m;
 | 
						|
	unsigned int n;
 | 
						|
	unsigned int m2;
 | 
						|
	unsigned int m3;
 | 
						|
	unsigned int m4;
 | 
						|
	unsigned int m5;
 | 
						|
	unsigned int m6;
 | 
						|
	unsigned int m2div;
 | 
						|
};
 | 
						|
 | 
						|
/* Following functions are exported from lowlevel_init.S */
 | 
						|
extern dpll_param *get_mpu_dpll_param(void);
 | 
						|
extern dpll_param *get_iva_dpll_param(void);
 | 
						|
extern dpll_param *get_core_dpll_param(void);
 | 
						|
extern dpll_param *get_per_dpll_param(void);
 | 
						|
extern dpll_param *get_per2_dpll_param(void);
 | 
						|
 | 
						|
extern dpll_param *get_36x_mpu_dpll_param(void);
 | 
						|
extern dpll_param *get_36x_iva_dpll_param(void);
 | 
						|
extern dpll_param *get_36x_core_dpll_param(void);
 | 
						|
extern dpll_param *get_36x_per_dpll_param(void);
 | 
						|
extern dpll_param *get_36x_per2_dpll_param(void);
 | 
						|
 | 
						|
extern void *_end_vect, *_start;
 | 
						|
 | 
						|
#endif
 |