mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-14 08:57:58 +00:00
a704a6d615
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>
68 lines
1.6 KiB
C
68 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
|