浏览代码

ads5121: Added support for FDT.

Signed-off-by: Grzegorz Bernacki <gjb@semihalf.com>
Grzegorz Bernacki 17 年之前
父节点
当前提交
281ff9a45c
共有 5 个文件被更改,包括 43 次插入0 次删除
  1. 8 0
      board/ads5121/ads5121.c
  2. 21 0
      cpu/mpc512x/cpu.c
  3. 3 0
      include/asm-ppc/u-boot.h
  4. 8 0
      include/configs/ads5121.h
  5. 3 0
      lib_ppc/board.c

+ 8 - 0
board/ads5121/ads5121.c

@@ -184,3 +184,11 @@ int checkboard (void)
 		brd_rev, cpld_rev);
 		brd_rev, cpld_rev);
 	return 0;
 	return 0;
 }
 }
+
+#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
+void ft_board_setup(void *blob, bd_t *bd)
+{
+	ft_cpu_setup(blob, bd);
+	fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
+}
+#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */

+ 21 - 0
cpu/mpc512x/cpu.c

@@ -32,6 +32,10 @@
 #include <mpc512x.h>
 #include <mpc512x.h>
 #include <asm/processor.h>
 #include <asm/processor.h>
 
 
+#if defined(CONFIG_OF_LIBFDT)
+#include <fdt_support.h>
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_GLOBAL_DATA_PTR;
 
 
 int checkcpu (void)
 int checkcpu (void)
@@ -125,3 +129,20 @@ void watchdog_reset (void)
 		enable_interrupts ();
 		enable_interrupts ();
 }
 }
 #endif
 #endif
+
+#ifdef CONFIG_OF_LIBFDT
+void ft_cpu_setup(void *blob, bd_t *bd)
+{
+	char * cpu_path = "/cpus/" OF_CPU;
+	char * eth_path = "/" OF_SOC "/ethernet@2800";
+
+	do_fixup_by_path_u32(blob, cpu_path, "timebase-frequency", OF_TBCLK, 1);
+	do_fixup_by_path_u32(blob, cpu_path, "bus-frequency", bd->bi_busfreq, 1);
+	do_fixup_by_path_u32(blob, cpu_path, "ref-frequency", CFG_MPC512X_CLKIN, 1);
+	do_fixup_by_path_u32(blob, cpu_path, "clock-frequency", bd->bi_intfreq, 1);
+	do_fixup_by_path_u32(blob, "/" OF_SOC, "bus-frequency", bd->bi_ipsfreq, 1);
+	do_fixup_by_path_u32(blob, "/" OF_SOC, "ref-frequency", CFG_MPC512X_CLKIN, 1);
+	do_fixup_by_path(blob, eth_path, "address", bd->bi_enetaddr, 6, 0);
+	do_fixup_by_path(blob, eth_path, "local-mac-address", bd->bi_enetaddr, 6, 0);
+}
+#endif

+ 3 - 0
include/asm-ppc/u-boot.h

@@ -74,6 +74,9 @@ typedef struct bd_info {
 	unsigned long	bi_sccfreq;	/* SCC_CLK Freq, in MHz */
 	unsigned long	bi_sccfreq;	/* SCC_CLK Freq, in MHz */
 	unsigned long	bi_vco;		/* VCO Out from PLL, in MHz */
 	unsigned long	bi_vco;		/* VCO Out from PLL, in MHz */
 #endif
 #endif
+#if defined(CONFIG_MPC512X)
+	unsigned long	bi_ipsfreq;	/* IPS Bus Freq, in MHz */
+#endif /* CONFIG_MPC512X */
 #if defined(CONFIG_MPC5xxx)
 #if defined(CONFIG_MPC5xxx)
 	unsigned long	bi_ipbfreq;	/* IPB Bus Freq, in MHz */
 	unsigned long	bi_ipbfreq;	/* IPB Bus Freq, in MHz */
 	unsigned long	bi_pcifreq;	/* PCI Bus Freq, in MHz */
 	unsigned long	bi_pcifreq;	/* PCI Bus Freq, in MHz */

+ 8 - 0
include/configs/ads5121.h

@@ -407,4 +407,12 @@
 
 
 #define CONFIG_BOOTCOMMAND	"run flash_self"
 #define CONFIG_BOOTCOMMAND	"run flash_self"
 
 
+#define CONFIG_OF_LIBFDT	1
+#define CONFIG_OF_BOARD_SETUP	1
+
+#define OF_CPU			"PowerPC,5121@0"
+#define OF_SOC			"soc5121@80000000"
+#define OF_TBCLK		(bd->bi_busfreq / 4)
+#define OF_STDOUT_PATH		"/soc5121@80000000/serial@11300"
+
 #endif	/* __CONFIG_H */
 #endif	/* __CONFIG_H */

+ 3 - 0
lib_ppc/board.c

@@ -555,6 +555,9 @@ void board_init_f (ulong bootflag)
 	bd->bi_sccfreq = gd->scc_clk;
 	bd->bi_sccfreq = gd->scc_clk;
 	bd->bi_vco     = gd->vco_out;
 	bd->bi_vco     = gd->vco_out;
 #endif /* CONFIG_CPM2 */
 #endif /* CONFIG_CPM2 */
+#if defined(CONFIG_MPC512X)
+	bd->bi_ipsfreq = gd->ipb_clk;
+#endif /* CONFIG_MPC512X */
 #if defined(CONFIG_MPC5xxx)
 #if defined(CONFIG_MPC5xxx)
 	bd->bi_ipbfreq = gd->ipb_clk;
 	bd->bi_ipbfreq = gd->ipb_clk;
 	bd->bi_pcifreq = gd->pci_clk;
 	bd->bi_pcifreq = gd->pci_clk;