On Wed, Feb 20, 2019 at 11:38 AM Adam Ford <aford...@gmail.com> wrote:
>
> On Wed, Feb 20, 2019 at 10:09 AM Lokesh Vutla <lokeshvu...@ti.com> wrote:
> >
> >
> >
> > On 2/20/2019 8:46 PM, Adam Ford wrote:
> > > On Wed, Feb 20, 2019 at 7:49 AM Lokesh Vutla <lokeshvu...@ti.com> wrote:
> > >>
> > >> Hi Adam,
> > >>
> > >> On 20/02/19 7:01 PM, Adam Ford wrote:
> > >>> I am trying to remove the manual pinmuxing code from the board file.
> > >>> In an effort to accomplish this, I am trying to get SPL_OF_CONTROL and
> > >>> SPL_PINCTRL to let me use the device tree(s) to initialize pin muxing.
> > >>>
> > >>> I have the following defined:
> > >>>
> > >>> CONFIG_SPL_PINCTRL=y
> > >>> CONFIG_SPL_PINCTRL_FULL=y
> > >>> CONFIG_SPL_PINCTRL_GENERIC=y
> > >>> CONFIG_SPL_PINMUX=y
> > >>>
> > >>> along with
> > >>> CONFIG_PINCTRL_IMX=y
> > >>> CONFIG_PINCTRL_IMX6=y
> > >>>
> > >>> I put some debugging code into the imx6 pinctrl and I can see that
> > >>> U-Boot initializes it, but that same debug message doesn't appear in
> > >>> SPL.
> > >>>
> > >>> I looked through the spl build directory, and I can see the drivers
> > >>> have been built, and the map file shows they exist, but for some
> > >>> reason, it doesn't initalize.  If I remove the UART pin-muxing from my
> > >>> board file, the text for SPL doesn't' appear at all, so it's clear
> > >>> pinctrl isn't setting up the proper muxing yet.
> > >>>
> > >>> I am trying to figure out how/where the pinctrl system gets
> > >>> initialized in SPL, and I was hoping someone might have some insight.
> > >>
> > >> Pinctrl will be set as part of device_probe() call[1] for each device.
> > >
> > > Thanks for the quick reply.  I took your suggestion and did a little
> > > more digging.
> > >
> > >>
> > >> Have you added u-boot,dm-spl for your pinctrl nodes? Try de-compiling 
> > >> spl dts
> > >> and check if all required nodes are available.
> > >
> > > u-boot,dm-spl  is setup in a common imx6qdl-u-boot.dtsi file.  The spl
> > > decompiled device tree show it.
> > >
> > > iomuxc@20e0000 {
> > >      compatible = "fsl,imx6q-iomuxc";
> > >      reg = < 0x20e0000 0x4000 >;
> > >      pinctrl-names = "default";
> > >      pinctrl-0 = < 0x2b >;
> > >      u-boot,dm-spl;
> > >      phandle = < 0x21 >;
> > >
> > >      uart1grp {
> > >           fsl,pins = < 0x2ac 0x694 0x920 0x01 0x03 0x1b0b1 0x2a8 0x690
> > > 0x00 0x01 0x00 0x1b0b1 >;
> > >           u-boot,dm-spl;
> > >           phandle = < 0x1d >;
> > >      };
> > > };
> > >
> > > With some debugging enabled during the fdtdec, I can see some chatter
> > > and references to it, but it looks like it cannot find it.
> > >
> > > U-Boot SPL 2019.04-rc2-03217-g2d08aa679e-dirty (Feb 20 2019 - 08:15:13 
> > > -0600)
> > > fdtdec_get_int_array: ranges
> > > get_prop_check_min_len: ranges
> > > fdtdec_get_int_array: ranges
> > > get_prop_check_min_len: ranges
> > > Looking for 'gpio' at 1224, name gpio@209c000
> > >    - gpio0, /soc/aips-bus@2000000/gpio@209c000
> > > Found seq 0
> > > Looking for 'pinctrl' at 1700, name iomuxc@20e0000
> > >    - gpio0, /soc/aips-bus@2000000/gpio@209c000
> > >    - mmc0, /soc/aips-bus@2100000/usdhc@2190000
> > >    - mmc1, /soc/aips-bus@2100000/usdhc@2194000
> > >    - serial0, /soc/aips-bus@2000000/spba-bus@2000000/serial@2020000
> > > Not found
> > > fdtdec_get_int_array: ranges
> > > get_prop_check_min_len: ranges
> > > Looking for 'mmc' at 2940, name usdhc@2190000
> > >    - gpio0, /soc/aips-bus@2000000/gpio@209c000
> > >    - mmc0, /soc/aips-bus@2100000/usdhc@2190000
> > > Found seq 0
> > > Looking for 'mmc' at 3200, name usdhc@2194000
> > >    - gpio0, /soc/aips-bus@2000000/gpio@209c000
> > >    - mmc0, /soc/aips-bus@2100000/usdhc@2190000
> > >    - mmc1, /soc/aips-bus@2100000/usdhc@2194000
> > > Found seq 1
> > > Trying to boot from USB SDP
> > > SDP: initialize...
> > > SDP: handle requests...
> > > Downloading file of size 613070 to 0x177fffc0... done
> > > Jumping to header at 0x177fffc0
> > > Header Tag is not an IMX image
> > >
> > > What's interesting is that when looking for gpio and the two various
> > > mmc's, the above function returns 'Found seq x' in SPL whereas the
> > > pinctrl returns 'Not found'
> >
> > Okay, most likely your pinctrl driver is not ready yet.
> > Your driver does not enables DM_FLAG_PRE_RELOC.
> >
> >  52 #if !CONFIG_IS_ENABLED(OF_CONTROL)
> >  53         .flags = DM_FLAG_PRE_RELOC,
> >  54 #endif
> >
> >
> > Can you enable it and try again?
>
> I tried forcing the DM_FLAG_PRE_RELOC and I tried making various nodes
> in the device tree u-boot,dm-pre-reloc instead of just u-boot,dm-spl;
>
> Either way I still can't get it to load.
>
> U-Boot SPL 2019.04-rc2-03218-gace08a038c-dirty (Feb 20 2019 - 11:30:08 -0600)
> fdtdec_get_int_array: ranges
> get_prop_check_min_len: ranges
> fdtdec_get_int_array: ranges
> get_prop_check_min_len: ranges
> fdtdec_get_int_array: ranges
> get_prop_check_min_len: ranges
> Looking for 'gpio' at 1324, name gpio@209c000
>    - gpio0, /soc/aips-bus@2000000/gpio@209c000
> Found seq 0
> Looking for 'pinctrl' at 1800, name iomuxc@20e0000
>    - gpio0, /soc/aips-bus@2000000/gpio@209c000
>    - mmc0, /soc/aips-bus@2100000/usdhc@2190000
>    - mmc1, /soc/aips-bus@2100000/usdhc@2194000
>    - serial0, /soc/aips-bus@2000000/spba-bus@2000000/serial@2020000
> Not found
> fdtdec_get_int_array: ranges
> get_prop_check_min_len: ranges
> Looking for 'mmc' at 3040, name usdhc@2190000
>    - gpio0, /soc/aips-bus@2000000/gpio@209c000
>    - mmc0, /soc/aips-bus@2100000/usdhc@2190000
> Found seq 0
> Looking for 'mmc' at 3300, name usdhc@2194000
>    - gpio0, /soc/aips-bus@2000000/gpio@209c000
>    - mmc0, /soc/aips-bus@2100000/usdhc@2190000
>    - mmc1, /soc/aips-bus@2100000/usdhc@2194000
> Found seq 1
> Trying to boot from USB SDP
> SDP: initialize...
> SDP: handle requests...
> Downloading file of size 613090 to 0x177fffc0... done
> Jumping to header at 0x177fffc0
> Header Tag is not an IMX image
>
> I still get nothing.
>
> Any thought as to why the 'pinctrl' node would be missing?  I would
> expect something like '/soc/aips-bus@2000000/iomuxc@20e0000' to appear
> in the list. Does it need an alias somehow?
>
> adam
>
> >
> > Thanks and regards,
> > Lokesh
> >
> > >
> > > I looked at the U-Boot part of the log and it also returns 'Not Found'
> > > but later in the sequence it initializes anyway.
> > >
> > > Looking for 'pinctrl' at 19064, name iomuxc@20e0000
> > >    - ethernet0, /soc/aips-bus@2100000/ethernet@2188000
> > >   ... [bunch of entries deleted]
> > >    - spi4, /soc/aips-bus@2000000/spba-bus@2000000/spi@2018000
> > > Not found
> > >
> > > Late this picks up, and we start initializing pins.  It seems like
> > > something is manually calling the pinmux since the driver probe fails,
> > > but it's not clear to me why it might fail.
> > >
> > >
> > > Found seq 2
> > > fdtdec_get_addr_size_fixed: reg: addr=020e0000, size=4000
> > > fdtdec_get_bool: fsl,input-sel
> > >
> > > (see my added debug line)
> > > initialized IMX pinctrl driver
> > >
> > > fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > > fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > > fdtdec_get_bool: fsl,dte-modes ʊ�  �1024 MiB
> > > MMC:   fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > > fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > > fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > > FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
> > > fdtdec_get_config_int: load-environment
> > > Loading Environment from NAND... OK
> > > In:    serial
> > > Out:   serial
> > > Err:   serial
> > > Net:   fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > > fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > >
> > > Error: ethernet@2188000 address not set.
> > > fdtdec_get_int_array: fsl,pins
> > > get_prop_check_min_len: fsl,pins
> > >
> > > Error: ethernet@2188000 address not set.
> > > eth-1: ethernet@2188000
> > > fdtdec_get_config_int: bootdelay
> > > fdtdec_get_config_int: kernel-offset
> > > fdtdec_get_config_int: rootdisk-offset
> > > fdtdec_get_config_string: bootcmd
> > > fdtdec_get_config_int: bootsecure
> > > Hit any key to stop autoboot:  0
> > > i.MX6 Logic #
> > >
> > >
> > > adam
> > >>
> > >>
> > >> [1]
> > >> http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/core/device.c;h=0d15e5062b66123cd364bd9803e076db7e7dd97c;hb=HEAD#l383
> > >>

Using your suggestion, looked at device.c and dug a little deeper and
turned on more debugging.

What I am finding is that the device tree is being assembled and
various nodes are being bound to each other, but unfortunately, the
probes never start.  I found a few boards (imx8 being one) where there
is a dedicated spl which have probe functions, but I was hoping
someone might be able to point me to the functions that actually call
the probes so I can see if they're actually getting called and/or
failing.

U-Boot SPL 2019.04-rc2-03218-gace08a038c-dirty (Feb 21 2019 - 18:17:23 -0600)
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
   - -1 -1 'root_driver'
   - not found
parsing subnodes of "chosen"
bind node aliases
Device 'aliases' has no compatible string
bind node soc
   - attempt to match compatible string 'simple-bus'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'generic_simple_bus'
ofnode_read_u32_array: ranges: fdtdec_get_int_array: ranges
get_prop_check_min_len: ranges
bind node gpmi-nand@112000
   - attempt to match compatible string 'fsl,imx6q-gpmi-nand'
No match for node 'gpmi-nand@112000'
bind node aips-bus@2000000
   - attempt to match compatible string 'fsl,aips-bus'
   - attempt to match compatible string 'simple-bus'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'generic_simple_bus'
ofnode_read_u32_array: ranges: fdtdec_get_int_array: ranges
get_prop_check_min_len: ranges
bind node spba-bus@2000000
   - attempt to match compatible string 'fsl,spba-bus'
   - attempt to match compatible string 'simple-bus'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'generic_simple_bus'
ofnode_read_u32_array: ranges: fdtdec_get_int_array: ranges
get_prop_check_min_len: ranges
bind node serial@2020000
   - attempt to match compatible string 'fsl,imx6q-uart'
   - attempt to match compatible string 'fsl,imx21-uart'
No match for node 'serial@2020000'
Bound device spba-bus@2000000 to aips-bus@2000000
bind node gpio@209c000
   - attempt to match compatible string 'fsl,imx6q-gpio'
   - attempt to match compatible string 'fsl,imx35-gpio'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'gpio_mxc'
Looking for 'gpio' at 1356, name gpio@209c000
   - gpio0, /soc/aips-bus@2000000/gpio@209c000
Found seq 0
Bound device gpio@209c000 to aips-bus@2000000
bind node iomuxc@20e0000
   - attempt to match compatible string 'fsl,imx6q-iomuxc'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'imx6-pinctrl'
Looking for 'pinctrl' at 1832, name iomuxc@20e0000
   - gpio0, /soc/aips-bus@2000000/gpio@209c000
   - mmc0, /soc/aips-bus@2100000/usdhc@2190000
   - mmc1, /soc/aips-bus@2100000/usdhc@2194000
   - serial0, /soc/aips-bus@2000000/spba-bus@2000000/serial@2020000
Not found
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-pre-proper: false
ofnode_read_bool: u-boot,dm-spl: true
Bound device gpminandgrp to iomuxc@20e0000
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-pre-proper: false
ofnode_read_bool: u-boot,dm-spl: true
Bound device uart1grp to iomuxc@20e0000
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-pre-proper: false
ofnode_read_bool: u-boot,dm-spl: true
Bound device usdhc1grp to iomuxc@20e0000
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-pre-proper: false
ofnode_read_bool: u-boot,dm-spl: true
Bound device usdhc2grp to iomuxc@20e0000
Bound device iomuxc@20e0000 to aips-bus@2000000
Bound device aips-bus@2000000 to soc
bind node aips-bus@2100000
   - attempt to match compatible string 'fsl,aips-bus'
   - attempt to match compatible string 'simple-bus'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'generic_simple_bus'
ofnode_read_u32_array: ranges: fdtdec_get_int_array: ranges
get_prop_check_min_len: ranges
bind node usdhc@2190000
   - attempt to match compatible string 'fsl,imx6q-usdhc'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'fsl-esdhc-mmc'
Looking for 'mmc' at 3036, name usdhc@2190000
   - gpio0, /soc/aips-bus@2000000/gpio@209c000
   - mmc0, /soc/aips-bus@2100000/usdhc@2190000
Found seq 0
Bound device us...@2190000.blk to usdhc@2190000
Bound device usdhc@2190000 to aips-bus@2100000
bind node usdhc@2194000
   - attempt to match compatible string 'fsl,imx6q-usdhc'
ofnode_read_bool: u-boot,dm-pre-reloc: false
ofnode_read_bool: u-boot,dm-spl: true
   - found match at 'fsl-esdhc-mmc'
Looking for 'mmc' at 3268, name usdhc@2194000
   - gpio0, /soc/aips-bus@2000000/gpio@209c000
   - mmc0, /soc/aips-bus@2100000/usdhc@2190000
   - mmc1, /soc/aips-bus@2100000/usdhc@2194000
Found seq 1
Bound device us...@2194000.blk to usdhc@2194000
Bound device usdhc@2194000 to aips-bus@2100000
Bound device aips-bus@2100000 to soc
Bound device soc to root_driver
Trying to boot from USB SDP
SDP: initialize...
SDP: handle requests...
Downloading file of size 614182 to 0x177fffc0... done
Jumping to header at 0x177fffc0
Header Tag is not an IMX image


> > >> Thanks and regards,
> > >> Lokesh
> > >>
> > >>>
> > >>> thanks,
> > >>>
> > >>> adam
> > >>> _______________________________________________
> > >>> U-Boot mailing list
> > >>> U-Boot@lists.denx.de
> > >>> https://lists.denx.de/listinfo/u-boot
> > >>>
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to