On 02/01/2016 07:19 PM, Bin Meng wrote: > Hi York, > > On Tue, Feb 2, 2016 at 11:11 AM, york sun <york....@nxp.com> wrote: >> On 02/01/2016 04:05 PM, Simon Glass wrote: >> <snip> >>>> >>>> I will take this chance to convert P2020DS to use DM. Need some guidance >>>> here. >>>> For NS16550, it needs the clock. To keep it simple, let's presume platform >>>> data >>>> is used. My trouble is the clock is not unknown at compiling time. It >>>> needs to >>>> be updated by checking the board/soc configuration after power up. The >>>> clock is >>>> only available after get_clocks() is called in init_sequance. Is there a >>>> way I >>>> can update the clocks before the driver is initialized? >>>> >>>> York >>> >>> See this commit: >>> >>> 858530a8 dm: tegra: Enable driver model for serial >>> >>> It sets up its own clock. >> >> Simon, >> >> Thanks for the pointer. I actually noticed this commit but it adds some >> confusion to me. Take your code as an example >> >> U_BOOT_DRIVER(serial_ns16550) = { >> .name = "serial_tegra20", >> .id = UCLASS_SERIAL, >> .of_match = tegra_serial_ids, >> .ofdata_to_platdata = tegra_serial_ofdata_to_platdata, >> .platdata_auto_alloc_size = sizeof(struct ns16550_platdata), >> .priv_auto_alloc_size = sizeof(struct NS16550), >> .probe = ns16550_serial_probe, >> .ops = &ns16550_serial_ops, >> }; >> >> The name "serial_ns16550" is not directly used anywhere. So I guess you >> didn't >> have to name it as "serial_ns16550", right? >> > > The commit Simon gave was an old one. Now all ns16550 driver has been > unified into one. > >> One step forward, if I want to create a new driver, say "fsl_ns16550", I will >> have to use ofdata_to_platdata to fill in plat->clock. But for majority >> powerpc >> SoCs, we don't use device tree. We may start to use device tree on new >> products. >> But it is probably not a good idea to force every platform to change. >> > > Please do not create a new driver for FSL chipset. Does FSL have any
That's a relief. I don't want to create a new driver just for the clock. > plan to continue maintaining all these PowerPC SoCs in U-Boot? If yes, > I believe the intention is to bring driver model and device tree to > these boards. I'd rather to add the device tree step by step, not all at once. And probably leave some legacy boards behind. > >> Is there another way to update plat->clock? >> > > You can define CONFIG_SYS_NS16550_CLK to a routine that gets the > correct clock freq at runtime: eg: get_serial_clock() Please explain in detail. I want to go down this path. For non-device tree platforms (for the time being), doesn't U_BOOT_DEVICES evaluate the platdata at compiling time? How can I use a routine as the clock for ns16550_platdata? It is pretty simple for fixed clock, as I am looking at an example arch/arm/cpu/armv7/am33xx/board.c. York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot