xref: /rk3399_rockchip-uboot/board/varisys/cyrus/cyrus.c (revision 723806cc5bea9f8b37323dfd7568603f99af6a06)
187e29878SAndy Fleming /*
287e29878SAndy Fleming  * Based on corenet_ds.c
387e29878SAndy Fleming  *
487e29878SAndy Fleming  * SPDX-License-Identifier:    GPL-2.0+
587e29878SAndy Fleming  */
687e29878SAndy Fleming 
787e29878SAndy Fleming #include <common.h>
887e29878SAndy Fleming #include <command.h>
987e29878SAndy Fleming #include <netdev.h>
1087e29878SAndy Fleming #include <linux/compiler.h>
1187e29878SAndy Fleming #include <asm/mmu.h>
1287e29878SAndy Fleming #include <asm/processor.h>
1387e29878SAndy Fleming #include <asm/cache.h>
1487e29878SAndy Fleming #include <asm/immap_85xx.h>
1587e29878SAndy Fleming #include <asm/fsl_law.h>
1687e29878SAndy Fleming #include <asm/fsl_serdes.h>
1787e29878SAndy Fleming #include <asm/fsl_portals.h>
1887e29878SAndy Fleming #include <asm/fsl_liodn.h>
1987e29878SAndy Fleming #include <fm_eth.h>
2087e29878SAndy Fleming #include <pci.h>
2187e29878SAndy Fleming 
2287e29878SAndy Fleming #include "cyrus.h"
2387e29878SAndy Fleming #include "../common/eeprom.h"
2487e29878SAndy Fleming 
2587e29878SAndy Fleming DECLARE_GLOBAL_DATA_PTR;
2687e29878SAndy Fleming 
2787e29878SAndy Fleming #define GPIO_OPENDRAIN 0x30000000
2887e29878SAndy Fleming #define GPIO_DIR       0x3c000004
2987e29878SAndy Fleming #define GPIO_INITIAL   0x30000000
3087e29878SAndy Fleming #define GPIO_VGA_SWITCH 0x00001000
3187e29878SAndy Fleming 
checkboard(void)3287e29878SAndy Fleming int checkboard(void)
3387e29878SAndy Fleming {
3487e29878SAndy Fleming 	printf("Board: CYRUS\n");
3587e29878SAndy Fleming 
3687e29878SAndy Fleming 	return 0;
3787e29878SAndy Fleming }
3887e29878SAndy Fleming 
board_early_init_f(void)3987e29878SAndy Fleming int board_early_init_f(void)
4087e29878SAndy Fleming {
4187e29878SAndy Fleming 	ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
4287e29878SAndy Fleming 	ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
4387e29878SAndy Fleming 
4487e29878SAndy Fleming 	/*
4587e29878SAndy Fleming 	 * Only use DDR1_MCK0/3 and DDR2_MCK0/3
4687e29878SAndy Fleming 	 * disable DDR1_MCK1/2/4/5 and DDR2_MCK1/2/4/5 to reduce
4787e29878SAndy Fleming 	 * the noise introduced by these unterminated and unused clock pairs.
4887e29878SAndy Fleming 	 */
4987e29878SAndy Fleming 	setbits_be32(&gur->ddrclkdr, 0x001B001B);
5087e29878SAndy Fleming 
5187e29878SAndy Fleming 	/* Set GPIO reset lines to open-drain, tristate */
5287e29878SAndy Fleming 	setbits_be32(&pgpio->gpdat, GPIO_INITIAL);
5387e29878SAndy Fleming 	setbits_be32(&pgpio->gpodr, GPIO_OPENDRAIN);
5487e29878SAndy Fleming 
5587e29878SAndy Fleming 	/* Set GPIO Direction */
5687e29878SAndy Fleming 	setbits_be32(&pgpio->gpdir, GPIO_DIR);
5787e29878SAndy Fleming 
5887e29878SAndy Fleming 	return 0;
5987e29878SAndy Fleming }
6087e29878SAndy Fleming 
board_early_init_r(void)6187e29878SAndy Fleming int board_early_init_r(void)
6287e29878SAndy Fleming {
6387e29878SAndy Fleming 	fsl_lbc_t *lbc = LBC_BASE_ADDR;
6487e29878SAndy Fleming 
6587e29878SAndy Fleming 	out_be32(&lbc->lbcr, 0);
6687e29878SAndy Fleming 	/* 1 clock LALE cycle */
6787e29878SAndy Fleming 	out_be32(&lbc->lcrr, 0x80000000 | CONFIG_SYS_LBC_LCRR);
6887e29878SAndy Fleming 
6987e29878SAndy Fleming 	set_liodns();
7087e29878SAndy Fleming 
7187e29878SAndy Fleming #ifdef CONFIG_SYS_DPAA_QBMAN
7287e29878SAndy Fleming 	setup_portals();
7387e29878SAndy Fleming #endif
7487e29878SAndy Fleming 	print_lbc_regs();
7587e29878SAndy Fleming 	return 0;
7687e29878SAndy Fleming }
7787e29878SAndy Fleming 
misc_init_r(void)7887e29878SAndy Fleming int misc_init_r(void)
7987e29878SAndy Fleming {
8087e29878SAndy Fleming 	return 0;
8187e29878SAndy Fleming }
8287e29878SAndy Fleming 
ft_board_setup(void * blob,bd_t * bd)8387e29878SAndy Fleming int ft_board_setup(void *blob, bd_t *bd)
8487e29878SAndy Fleming {
8587e29878SAndy Fleming 	phys_addr_t base;
8687e29878SAndy Fleming 	phys_size_t size;
8787e29878SAndy Fleming 
8887e29878SAndy Fleming 	ft_cpu_setup(blob, bd);
8987e29878SAndy Fleming 
90*723806ccSSimon Glass 	base = env_get_bootm_low();
91*723806ccSSimon Glass 	size = env_get_bootm_size();
9287e29878SAndy Fleming 
9387e29878SAndy Fleming 	fdt_fixup_memory(blob, (u64)base, (u64)size);
9487e29878SAndy Fleming 
9587e29878SAndy Fleming #ifdef CONFIG_PCI
9687e29878SAndy Fleming 	pci_of_setup(blob, bd);
9787e29878SAndy Fleming #endif
9887e29878SAndy Fleming 
9987e29878SAndy Fleming 	fdt_fixup_liodn(blob);
100a5c289b9SSriram Dash 	fsl_fdt_fixup_dr_usb(blob, bd);
10187e29878SAndy Fleming 
10287e29878SAndy Fleming #ifdef CONFIG_SYS_DPAA_FMAN
10387e29878SAndy Fleming 	fdt_fixup_fman_ethernet(blob);
10487e29878SAndy Fleming #endif
10587e29878SAndy Fleming 
10687e29878SAndy Fleming 	return 0;
10787e29878SAndy Fleming }
10887e29878SAndy Fleming 
mac_read_from_eeprom(void)10987e29878SAndy Fleming int mac_read_from_eeprom(void)
11087e29878SAndy Fleming {
11187e29878SAndy Fleming 	init_eeprom(CONFIG_SYS_EEPROM_BUS_NUM,
11287e29878SAndy Fleming 		CONFIG_SYS_I2C_EEPROM_ADDR,
11387e29878SAndy Fleming 		CONFIG_SYS_I2C_EEPROM_ADDR_LEN);
11487e29878SAndy Fleming 
11587e29878SAndy Fleming 	return mac_read_from_eeprom_common();
11687e29878SAndy Fleming }
117