mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-01 09:00:45 +09:00
mpc83xx: remaining 8360 libfdt fixes
PCI clocks and QE frequencies weren't being updated, and the core clock was being updated incorrectly. This patch also adds a /memory node if it doesn't already exist prior to update. plus some cosmetic trimming to single line comments. Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
This commit is contained in:
parent
f4b2ac5ed9
commit
8f9e0e9f33
@ -305,7 +305,15 @@ ft_board_setup(void *blob, bd_t *bd)
|
||||
int tmp[2];
|
||||
|
||||
nodeoffset = fdt_find_node_by_path(blob, "/memory");
|
||||
if (nodeoffset < 0) {
|
||||
nodeoffset = fdt_add_subnode(blob, 0, "memory");
|
||||
if (nodeoffset < 0)
|
||||
printf("WARNING: failed to add /memory node: %s\n",
|
||||
fdt_strerror(nodeoffset));
|
||||
}
|
||||
if (nodeoffset >= 0) {
|
||||
fdt_setprop(blob, nodeoffset, "device_type",
|
||||
"memory", sizeof("memory"));
|
||||
tmp[0] = cpu_to_be32(bd->bi_memstart);
|
||||
tmp[1] = cpu_to_be32(bd->bi_memsize);
|
||||
fdt_setprop(blob, nodeoffset, "reg", tmp, sizeof(tmp));
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include <ft_build.h>
|
||||
#elif defined(CONFIG_OF_LIBFDT)
|
||||
#include <libfdt.h>
|
||||
#include <libfdt_env.h>
|
||||
#endif
|
||||
|
||||
#include <asm/fsl_i2c.h>
|
||||
@ -314,7 +313,12 @@ ft_pci_setup(void *blob, bd_t *bd)
|
||||
if (nodeoffset >= 0) {
|
||||
tmp[0] = cpu_to_be32(hose[0].first_busno);
|
||||
tmp[1] = cpu_to_be32(hose[0].last_busno);
|
||||
err = fdt_setprop(blob, nodeoffset, "bus-range", tmp, sizeof(tmp));
|
||||
err = fdt_setprop(blob, nodeoffset, "bus-range",
|
||||
tmp, sizeof(tmp));
|
||||
|
||||
tmp[0] = cpu_to_be32(gd->pci_clk);
|
||||
err = fdt_setprop(blob, nodeoffset, "clock-frequency",
|
||||
tmp, sizeof(tmp[0]));
|
||||
}
|
||||
}
|
||||
#elif defined(CONFIG_OF_FLAT_TREE)
|
||||
|
@ -35,12 +35,10 @@
|
||||
#include <ft_build.h>
|
||||
#elif defined(CONFIG_OF_LIBFDT)
|
||||
#include <libfdt.h>
|
||||
#include <libfdt_env.h>
|
||||
#endif
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
||||
int checkcpu(void)
|
||||
{
|
||||
volatile immap_t *immr;
|
||||
@ -333,9 +331,7 @@ void watchdog_reset (void)
|
||||
*/
|
||||
static int fdt_set_eth0(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
/*
|
||||
* Fix it up if it exists, don't create it if it doesn't exist.
|
||||
*/
|
||||
/* Fix it up if it exists, don't create it if it doesn't exist */
|
||||
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
||||
return fdt_setprop(blob, nodeoffset, name, bd->bi_enetaddr, 6);
|
||||
}
|
||||
@ -345,9 +341,7 @@ static int fdt_set_eth0(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
/* second onboard ethernet port */
|
||||
static int fdt_set_eth1(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
/*
|
||||
* Fix it up if it exists, don't create it if it doesn't exist.
|
||||
*/
|
||||
/* Fix it up if it exists, don't create it if it doesn't exist */
|
||||
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
||||
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet1addr, 6);
|
||||
}
|
||||
@ -358,9 +352,7 @@ static int fdt_set_eth1(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
/* third onboard ethernet port */
|
||||
static int fdt_set_eth2(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
/*
|
||||
* Fix it up if it exists, don't create it if it doesn't exist.
|
||||
*/
|
||||
/* Fix it up if it exists, don't create it if it doesn't exist */
|
||||
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
||||
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet2addr, 6);
|
||||
}
|
||||
@ -371,9 +363,7 @@ static int fdt_set_eth2(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
/* fourth onboard ethernet port */
|
||||
static int fdt_set_eth3(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
/*
|
||||
* Fix it up if it exists, don't create it if it doesn't exist.
|
||||
*/
|
||||
/* Fix it up if it exists, don't create it if it doesn't exist */
|
||||
if (fdt_get_property(blob, nodeoffset, name, 0)) {
|
||||
return fdt_setprop(blob, nodeoffset, name, bd->bi_enet3addr, 6);
|
||||
}
|
||||
@ -384,9 +374,7 @@ static int fdt_set_eth3(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
static int fdt_set_busfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
u32 tmp;
|
||||
/*
|
||||
* Create or update the property.
|
||||
*/
|
||||
/* Create or update the property */
|
||||
tmp = cpu_to_be32(bd->bi_busfreq);
|
||||
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
||||
}
|
||||
@ -394,14 +382,38 @@ static int fdt_set_busfreq(void *blob, int nodeoffset, const char *name, bd_t *b
|
||||
static int fdt_set_tbfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
u32 tmp;
|
||||
/*
|
||||
* Create or update the property.
|
||||
*/
|
||||
/* Create or update the property */
|
||||
tmp = cpu_to_be32(OF_TBCLK);
|
||||
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
||||
}
|
||||
|
||||
|
||||
static int fdt_set_clockfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
u32 tmp;
|
||||
/* Create or update the property */
|
||||
tmp = cpu_to_be32(gd->core_clk);
|
||||
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_QE
|
||||
static int fdt_set_qe_busfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
u32 tmp;
|
||||
/* Create or update the property */
|
||||
tmp = cpu_to_be32(gd->qe_clk);
|
||||
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
||||
}
|
||||
|
||||
static int fdt_set_qe_brgfreq(void *blob, int nodeoffset, const char *name, bd_t *bd)
|
||||
{
|
||||
u32 tmp;
|
||||
/* Create or update the property */
|
||||
tmp = cpu_to_be32(gd->brg_clk);
|
||||
return fdt_setprop(blob, nodeoffset, name, &tmp, sizeof(tmp));
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Fixups to the fdt.
|
||||
*/
|
||||
@ -420,6 +432,10 @@ static const struct {
|
||||
},
|
||||
{ "/cpus/" OF_CPU,
|
||||
"clock-frequency",
|
||||
fdt_set_clockfreq
|
||||
},
|
||||
{ "/" OF_SOC,
|
||||
"bus-frequency",
|
||||
fdt_set_busfreq
|
||||
},
|
||||
{ "/" OF_SOC "/serial@4500",
|
||||
@ -450,6 +466,15 @@ static const struct {
|
||||
fdt_set_eth1
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_QE
|
||||
{ "/" OF_QE,
|
||||
"brg-frequency",
|
||||
fdt_set_qe_brgfreq
|
||||
},
|
||||
{ "/" OF_QE,
|
||||
"bus-frequency",
|
||||
fdt_set_qe_busfreq
|
||||
},
|
||||
#ifdef CONFIG_UEC_ETH1
|
||||
#if CFG_UEC1_UCC_NUM == 0 /* UCC1 */
|
||||
{ "/" OF_QE "/ucc@2000",
|
||||
@ -492,6 +517,7 @@ static const struct {
|
||||
},
|
||||
#endif
|
||||
#endif /* CONFIG_UEC_ETH2 */
|
||||
#endif /* CONFIG_QE */
|
||||
};
|
||||
|
||||
void
|
||||
|
@ -351,6 +351,7 @@ int get_clocks(void)
|
||||
gd->qe_clk = qe_clk;
|
||||
gd->brg_clk = brg_clk;
|
||||
#endif
|
||||
gd->pci_clk = pci_sync_in;
|
||||
gd->cpu_clk = gd->core_clk;
|
||||
gd->bus_clk = gd->csb_clk;
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user