* Converting "board file" to device tree one device at a time?
@ 2015-07-31 9:57 Mason
[not found] ` <55BB4686.8030509-GANU6spQydw@public.gmane.org>
0 siblings, 1 reply; 4+ messages in thread
From: Mason @ 2015-07-31 9:57 UTC (permalink / raw)
To: DT; +Cc: Linux ARM, Grant Likely, Rob Herring
Hello,
I'm using an ARM Cortex A9 based platform. I have a minimal
3.14 port working (UART and Ethernet, loads a root file system
over NFS) using a board file.
I'm trying to convert the port to device tree, so that I can
(try to) push it upstream.
As I can't wrap my head around the concept, I'm trying to do
the conversion "one device at a time", starting with just the
UART, then Ethernet, then the clock tree, and that's basically
all I need to boot the board.
I started by enabling
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y
CONFIG_SERIAL_OF_PLATFORM=y
and wrote this dts:
/dts-v1/;
/ {
compatible = "sigma,tango4-soc";
#address-cells = <1>;
#size-cells = <1>;
soc {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges;
uart0: serial@10700 {
compatible = "ns16550a";
reg = <0x10700 0x100>;
interrupts = <1>;
clock-frequency = <7372800>;
reg-shift = <2>;
no-loopback-test;
#address-cells = <1>;
#size-cells = <1>;
};
};
};
and added "sigma,tango4-soc" to my struct machine_desc .dt_compat
Then I generated a kernel with appended DT using:
$ make dtbs
$ make -j2 zImage && cat arch/arm/boot/zImage arch/arm/boot/dts/tango.dtb >XXX
$ mv XXX arch/arm/boot/zImage && make uImage
Then I set a breakpoint in of_platform_serial_probe, hoping
to witness the miracle... and nothing. Looks like device is
never registered :-(
Can anyone point me where to look?
What did I do wrong?
Where does the kernel parse the appended DTB?
Is it setup_machine_fdt?
When/Where is the UART description in the device tree supposed
to be used to register the device?
Any help greatly appreciated!
Regards.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread[parent not found: <55BB4686.8030509-GANU6spQydw@public.gmane.org>]
* Re: Converting "board file" to device tree one device at a time? [not found] ` <55BB4686.8030509-GANU6spQydw@public.gmane.org> @ 2015-07-31 14:54 ` Mason [not found] ` <55BB8C08.1060006-GANU6spQydw@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Mason @ 2015-07-31 14:54 UTC (permalink / raw) To: DT; +Cc: Linux ARM, Grant Likely, Rob Herring On 31/07/2015 11:57, Mason wrote: > Then I set a breakpoint in of_platform_serial_probe, hoping > to witness the miracle... and nothing. Looks like device is > never registered :-( IIUC, the kernel is supposed to parse my "uart0" node, and register the device. Then the platform framework should see that the node's "compatible" property is equal to one advertized by the of_platform_serial_driver, and the kernel should #!@& call of_platform_serial_probe? Right?! I just can't believe how much time I've been pulling my hair over this trivial issue... Regards. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <55BB8C08.1060006-GANU6spQydw@public.gmane.org>]
* Re: Converting "board file" to device tree one device at a time? [not found] ` <55BB8C08.1060006-GANU6spQydw@public.gmane.org> @ 2015-07-31 15:05 ` Russell King - ARM Linux [not found] ` <20150731150551.GW7557-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Russell King - ARM Linux @ 2015-07-31 15:05 UTC (permalink / raw) To: Mason; +Cc: DT, Grant Likely, Rob Herring, Linux ARM On Fri, Jul 31, 2015 at 04:54:00PM +0200, Mason wrote: > On 31/07/2015 11:57, Mason wrote: > > > Then I set a breakpoint in of_platform_serial_probe, hoping > > to witness the miracle... and nothing. Looks like device is > > never registered :-( > > IIUC, the kernel is supposed to parse my "uart0" node, and > register the device. Then the platform framework should see > that the node's "compatible" property is equal to one > advertized by the of_platform_serial_driver, and the kernel > should #!@& call of_platform_serial_probe? Right?! No, it doesn't work like that. The kernel creates platform devices from the nodes described in the DT file, which are then used to bind to the drivers in a very similar way to non-DT, except that if there's an dev->of_node pointer present, the compatible property is used. If there are no devices being created from DT, drivers won't have anything to bind to. > I just can't believe how much time I've been pulling my hair > over this trivial issue... My /guess/ is that you have an .init_machine callback in place, but that is not calling of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); which means none of the DT-described devices are being created. -- FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up according to speedtest.net. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <20150731150551.GW7557-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>]
* Re: Converting "board file" to device tree one device at a time? [not found] ` <20150731150551.GW7557-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> @ 2015-07-31 15:13 ` Mason 0 siblings, 0 replies; 4+ messages in thread From: Mason @ 2015-07-31 15:13 UTC (permalink / raw) To: Russell King - ARM Linux; +Cc: DT, Grant Likely, Rob Herring, Linux ARM On 31/07/2015 17:05, Russell King - ARM Linux wrote: > On Fri, Jul 31, 2015 at 04:54:00PM +0200, Mason wrote: >> On 31/07/2015 11:57, Mason wrote: >> >>> Then I set a breakpoint in of_platform_serial_probe, hoping >>> to witness the miracle... and nothing. Looks like device is >>> never registered :-( >> >> IIUC, the kernel is supposed to parse my "uart0" node, and >> register the device. Then the platform framework should see >> that the node's "compatible" property is equal to one >> advertized by the of_platform_serial_driver, and the kernel >> should #!@& call of_platform_serial_probe? Right?! > > No, it doesn't work like that. The kernel creates platform devices > from the nodes described in the DT file, which are then used to bind > to the drivers in a very similar way to non-DT, except that if there's > an dev->of_node pointer present, the compatible property is used. If > there are no devices being created from DT, drivers won't have anything > to bind to. > >> I just can't believe how much time I've been pulling my hair >> over this trivial issue... > > My /guess/ is that you have an .init_machine callback in place, but that > is not calling of_platform_populate(NULL, of_default_bus_match_table, > NULL, NULL); which means none of the DT-described devices are being > created. You are my savior. Yes, I've read 5 bazillion OF/FDT tutorials/overviews, and I managed to miss of_platform_populate. You have just saved this desk from one more week of head-banging. Thanks again! Regards. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-07-31 15:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-31 9:57 Converting "board file" to device tree one device at a time? Mason
[not found] ` <55BB4686.8030509-GANU6spQydw@public.gmane.org>
2015-07-31 14:54 ` Mason
[not found] ` <55BB8C08.1060006-GANU6spQydw@public.gmane.org>
2015-07-31 15:05 ` Russell King - ARM Linux
[not found] ` <20150731150551.GW7557-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2015-07-31 15:13 ` Mason
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).