static void platform_fixups(void) { void *soc; dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr, bd.bi_enet2addr); dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); /* Unfortunately, the specific model number is encoded in the * soc node name in existing dts files -- once that is fixed, * this can do a simple path lookup. */ soc = find_node_by_devtype(NULL, "soc"); if (soc) { void *serial = NULL; setprop(soc, "bus-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); while ((serial = find_node_by_devtype(serial, "serial"))) { if (get_parent(serial) != soc) continue; setprop(serial, "clock-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); } } }
static void platform_fixups(void) { void *devp; dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr); dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); devp = find_node_by_devtype(NULL, "soc"); if (devp) { void *serial = NULL; setprop(devp, "bus-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); while ((serial = find_node_by_devtype(serial, "serial"))) { if (get_parent(serial) != devp) continue; setprop(serial, "clock-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); } } devp = find_node_by_compatible(NULL, "fsl,cpm2-brg"); if (devp) setprop(devp, "clock-frequency", &bd.bi_brgfreq, sizeof(bd.bi_brgfreq)); }
static void platform_fixups(void) { void *devp; dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); dt_fixup_mac_address_by_alias("ethernet0", bd.bi_enetaddr); dt_fixup_mac_address_by_alias("ethernet1", bd.bi_enet1addr); dt_fixup_mac_address_by_alias("ethernet2", bd.bi_enet2addr); dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 8, bd.bi_busfreq); /* Unfortunately, the specific model number is encoded in the * soc node name in existing dts files -- once that is fixed, * this can do a simple path lookup. */ devp = find_node_by_devtype(NULL, "soc"); if (devp) { void *serial = NULL; setprop(devp, "bus-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); while ((serial = find_node_by_devtype(serial, "serial"))) { if (get_parent(serial) != devp) continue; setprop(serial, "clock-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); } } devp = find_node_by_compatible(NULL, "fsl,cpm2-brg"); if (devp) setprop(devp, "clock-frequency", &bd.bi_brgfreq, sizeof(bd.bi_brgfreq)); }
static void platform_fixups(void) { void *soc, *mpic; dt_fixup_memory(0, mem_size); dt_fixup_mac_address_by_alias("ethernet0", enetaddr); dt_fixup_cpu_clocks(int_freq, bus_freq / 8, bus_freq); /* Unfortunately, the specific model number is encoded in the * soc node name in existing dts files -- once that is fixed, * this can do a simple path lookup. */ soc = find_node_by_devtype(NULL, "soc"); if (soc) { void *serial = NULL; setprop(soc, "bus-frequency", &bus_freq, sizeof(bus_freq)); while ((serial = find_node_by_devtype(serial, "serial"))) { if (get_parent(serial) != soc) continue; setprop(serial, "clock-frequency", &bus_freq, sizeof(bus_freq)); } } mpic = find_node_by_compatible(NULL, "fsl,mpic"); if (mpic) setprop(mpic, "clock-frequency", &bus_freq, sizeof(bus_freq)); }
static void platform_fixups(void) { void *tsi; dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); dt_fixup_mac_addresses(bd.bi_enetaddr, bd.bi_enet1addr); dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); tsi = find_node_by_devtype(NULL, "tsi-bridge"); if (tsi) setprop(tsi, "bus-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); }
static void platform_fixups(void) { void *soc; dt_fixup_memory(bd.bi_memstart, bd.bi_memsize); dt_fixup_mac_addresses(bd.bi_enetaddr); dt_fixup_cpu_clocks(bd.bi_intfreq, bd.bi_busfreq / 4, bd.bi_busfreq); soc = find_node_by_devtype(NULL, "soc"); if (soc) { void *serial = NULL; setprop(soc, "bus-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); while ((serial = find_node_by_devtype(serial, "serial"))) { if (get_parent(serial) != soc) continue; setprop(serial, "clock-frequency", &bd.bi_busfreq, sizeof(bd.bi_busfreq)); } } }
void dt_fixup_cpu_clocks(u32 cpu, u32 tb, u32 bus) { void *devp = NULL; printf("CPU clock-frequency <- 0x%x (%dMHz)\n\r", cpu, MHZ(cpu)); printf("CPU timebase-frequency <- 0x%x (%dMHz)\n\r", tb, MHZ(tb)); if (bus > 0) printf("CPU bus-frequency <- 0x%x (%dMHz)\n\r", bus, MHZ(bus)); while ((devp = find_node_by_devtype(devp, "cpu"))) { setprop_val(devp, "clock-frequency", cpu); setprop_val(devp, "timebase-frequency", tb); if (bus > 0) setprop_val(devp, "bus-frequency", bus); } timebase_period_ns = 1000000000 / tb; }