All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Anderson <seanga2@gmail.com>
To: u-boot@lists.denx.de
Subject: Fastboot
Date: Wed, 10 Mar 2021 18:44:07 -0500	[thread overview]
Message-ID: <e62a6283-e7c3-e41d-47ca-8a8a7de8d136@gmail.com> (raw)
In-Reply-To: <CAEyb4nEdHUkvJk1mkaEh2nXy4BrdpXoFmdY0wyH6FCT-6whfcA@mail.gmail.com>

On 3/10/21 12:43 PM, Jonas Vautherin wrote:
> Hello!
> 
> I've made some more tests, but I am stuck and I don't really know what
> I am missing. Would love to get some insights, if somebody has an idea
> :-). So my root problem is that I would like to run my pocketbeagle in
> fastboot mode so that I can flash an image from my laptop over USB
> (it's a learning experience, I'm new to u-boot).
> 
> When I go into the u-boot prompt and run `fastboot usb 0` (after I set
> `log level 7`), I get:
> 
> ```
> => fastboot usb 0
> uclass_find_device_by_seq() 0 0
> uclass_find_device_by_seq()    - not found
> uclass_find_device_by_seq() 1 0
> uclass_find_device_by_seq()    - not found
> cmd_call() Command failed, result=1
> ```
> 
> Similar for `fastboot usb 1` (I don't know which one is the microB on
> the pocketbeagle), except the numbers are `0 1` and `1 1` in the log
> output.

The numbers come from /aliases in the device tree. You should read the
datasheet/schematic to figure out which is which :)

> 
> If I `dm tree`, for some reason I see only usb1 at 47401800 (according to
> the `.dts`, usb0 is @47401000).
> 
> ```
>   misc          0  [ + ]   ti-musb-wrapper           `-- usb at 47400000
>   usb           0  [   ]   ti-musb-host                  `-- usb at 47401800
> ```
> 
> Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig
> u-boot), I see that "Default Device Tree for DT control" is
> (am335x-evm). Opening
> ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts
> (which I believe is the one corresponding to `am335x-evm` in my
> defconfig), I see the following for usb:
> 
> ```
> &usb {
> status = "okay";
> };
> 
> &usb_ctrl_mod {
> status = "okay";
> };
> 
> &usb0_phy {
> status = "okay";
> };
> 
> &usb1_phy {
> status = "okay";
> };
> 
> &usb0 {
> status = "okay";
> };
> 
> &usb1 {
> status = "okay";
> dr_mode = "host";
> };
> ```
> 
> And showing usb0 and usb1 with `fdt print` (after I get the value of
> $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get:
> 
> ```
> => fdt print /ocp/usb at 47400000/usb at 47401000
> usb at 47401000 {
>          compatible = "ti,musb-am33xx";
>          status = "okay";
>          reg = <0x47401400 0x00000400 0x47401000 0x00000200>;
>          reg-names = "mc", "control";
>          interrupts = <0x00000012>;
>          interrupt-names = "mc";
>          dr_mode = "otg";
>          mentor,multipoint = <0x00000001>;
>          mentor,num-eps = <0x00000010>;
>          mentor,ram-bits = <0x0000000c>;
>          mentor,power = <0x000001f4>;
>          phys = <0x00000037>;
>          dmas = * 0x9df20aa8 [0x00000168];
>          dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx
> 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
> };
> ```
> 
> and
> 
> ```
> => fdt print /ocp/usb at 47400000/usb at 47401800
> usb at 47401800 {
>          compatible = "ti,musb-am33xx";
>          status = "okay";
>          reg = <0x47401c00 0x00000400 0x47401800 0x00000200>;
>          reg-names = "mc", "control";
>          interrupts = <0x00000013>;
>          interrupt-names = "mc";
>          dr_mode = "host";
>          mentor,multipoint = <0x00000001>;
>          mentor,num-eps = <0x00000010>;
>          mentor,ram-bits = <0x0000000c>;
>          mentor,power = <0x000001f4>;
>          phys = <0x00000039>;
>          dmas = * 0x9df20e50 [0x00000168];
>          dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx
> 15";
> };
> ```
> 
> My understanding is therefore that `usb0` is in "otg" mode, and `usb1`
> is in "host" mode. But that does not really tell me why `fastboot usb
> 0` and `fastboot usb 1` failed.

Yes. The U-Boot driver only supports host and peripheral modes, so no
otg device is created. And fastboot cannot work with a USB host.

> 
> I have also tried to edit `am335x-evm.dts` and set both to
> "peripheral" (I do that in a Yocto patch step and make sure I `bitbake
> -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I
> rebuild):
> 
> ```
> &usb0 {
> status = "okay";
> dr_mode = "peripheral";
> };
> 
> &usb1 {
> status = "okay";
> dr_mode = "peripheral";
> };
> ```
> 
> But that does not change anything in the `fdt print` output: usb0 is
> still "otg" and usb1 is still "host". Which makes me guess I may be
> modifying the wrong `am335x-evm.dts`, but I really don't know how I
> could check that.

Does cleaning wipe your changes? There should be some yocto way to apply
patches; perhaps someone else can comment on that.

--Sean

> 
> Again, any hints are appreciated, I'm happy to DuckDuckGo some new keywords or ideas as my goal is to learn about u-boot, but right now I'm just stuck :-).
> 
> Best Regards,
> Jonas
> 
> On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin <jonas.vautherin at gmail.com <mailto:jonas.vautherin@gmail.com>> wrote:
> 
>     Yes that was it! I had used `log help`, but misunderstood the output. My bad... Below is the debug output I receive, where I don't really get what's happening except for those two lines:
> 
>     ```
>     uclass_find_device_by_seq() - 1 -1 'usb at 47401800'
>     uclass_find_device_by_seq() - not found
>     ```
> 
>     But I don't really understand what it means. I spent a lot of time reading the available options in menuconfig, and at that point I cannot say what I am doing wrong. Note that I am using the `am335x_evm_defconfig` defconfig, which I changed to get more logging outputs.
> 
>     Here is the output of `usb start`, let me know if I am missing something obvious from there:
> 
>     ```
>     => usb start
>     starting USB...
>     Bus usb at 47401800: __of_translate_address() OF: ** translation for device usb at 47401800 **
>     __of_translate_address() OF: bus is default (na=1, ns=1) on usb at 47400000
>     __of_translate_address() OF: parent bus is default (na=1, ns=1) on ocp
>     of_translate_one() OF: no ranges, 1:1 translation
>     of_translate_one() OF: with offset: 1195382784
>     __of_translate_address() OF: parent bus is default (na=1, ns=1) on
>     of_translate_one() OF: no ranges, 1:1 translation
>     of_translate_one() OF: with offset: 1195382784
>     __of_translate_address() OF: reached root node
>     fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys
>     fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod
>     fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: fdtdec_get_addr_size_fixed() addr=44e10620
>     fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() 0x1 (1)
>     fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() 0x10 (16)
>     fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() 0xc (12)
>     fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() 0x1f4 (500)
>     uclass_find_device_by_seq() 0 1
>     uclass_find_device_by_seq() - 1 -1 'usb at 47401800'
>     uclass_find_device_by_seq() - not found
>     clk_set_defaults() clk_set_defaults(usb at 47401800)
>     clk_set_default_parents() clk_set_default_parents: could not read assigned-clock-parents for 9df24d30
>     ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: ofnode_read_prop() <not found>
>     musb_core_init() musb-hdrc: hw_ep 0shared, max 64
>     musb_core_init() musb-hdrc: hw_ep 1tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 1rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 2tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 2rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 3tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 3rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 4tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 4rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 5tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 5rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 6tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 6rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 7tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 7rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 8tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 8rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 9tx, max 512
>     musb_core_init() musb-hdrc: hw_ep 9rx, max 512
>     musb_core_init() musb-hdrc: hw_ep 10tx, max 256
>     musb_core_init() musb-hdrc: hw_ep 10rx, max 64
>     musb_core_init() musb-hdrc: hw_ep 11tx, max 256
>     musb_core_init() musb-hdrc: hw_ep 11rx, max 64
>     musb_core_init() musb-hdrc: hw_ep 12tx, max 256
>     musb_core_init() musb-hdrc: hw_ep 12rx, max 64
>     musb_core_init() musb-hdrc: hw_ep 13shared, max 4096
>     musb_core_init() musb-hdrc: hw_ep 14shared, max 1024
>     musb_core_init() musb-hdrc: hw_ep 15shared, max 1024
>     musb_start() <== devctl 80
>     musb_stop() HDRC disabled
>     Port not available.
>     usb_init() scan end
>     ```
> 
>     Best,
> 
>     On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com>> wrote:
> 
>         On 3/6/21 8:38 PM, Jonas Vautherin wrote:
>          > Thanks a lot Sean!
>          >
>          > I tried to enable logging by using the following CONFIG_:
>          >
>          > ```
>          > CONFIG_LOG=y
>          > CONFIG_SPL_LOG=y
>          > CONFIG_TPL_LOG=y
>          > CONFIG_LOG_MAX_LEVEL=5
> 
>         You need to increase this. Log levels are only compiled-in if they are
>         less than the max log level.
> 
>          > CONFIG_SPL_LOG_MAX_LEVEL=3
>          > CONFIG_TPL_LOG_MAX_LEVEL=3
>          > CONFIG_LOG_DEFAULT_LEVEL=7
>          > CONFIG_LOG_CONSOLE=y
>          > CONFIG_SPL_LOG_CONSOLE=y
>          > CONFIG_TPL_LOG_CONSOLE=y
>          >
>          > CONFIG_CMD_LOG=y
>          > ```
>          >
>          > And I got the "log" function indeed. But it did not have the effect I was hoping for:
>          >
>          > ```
>          > => log level set 7
> 
>         Use the help function ;)
> 
>         The correct syntax is "log level 7"
> 
>         If you use a newer U-Boot (newer than 2021.01) then the output will be
>         more verbose. E.g.
> 
>         => log level
>         EMERG
>         ALERT
>         CRIT
>         ERR
>         WARNING
>         NOTICE
>         INFO (default)
>         DEBUG
> 
>         --Sean
> 
>          > => log level
>          > Default log level: 0
>          > => usb start
>          > starting USB...
>          > Bus usb at 47401800: Port not available.
>          > ```
>          >
>          > First, I don't get why it says "Default log level: 0" after I set it (to whatever number, apparently). And second, it does not seem to bring me more output about the usb issue :-/.
>          >
>          > Am I missing something?
>          >
>          > Best,
>          > Jonas
>          >
>          > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com> <mailto:seanga2 at gmail.com <mailto:seanga2@gmail.com>>> wrote:
>          >
>          >     On 3/5/21 7:10 PM, Jonas Vautherin wrote:
>          >      > Hello!
>          >      >
>          >      > I am learning about Fastboot, and I would like to run it from u-boot and
>          >      > detect it from my host computer (I have the tools on my host, that's
>          >      > working with other devices).
>          >      >
>          >      > I am using a pocketbeagle and I built an image using Yocto. I can get into
>          >      > the u-boot prompt at boot time, and I get the following output:
>          >      >
>          >      > ```
>          >      > Rebooting... reboot: Restarting system
>          >      >
>          >      > U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000)
>          >      > Trying to boot from MMC1
>          >      >
>          >      >
>          >      > U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000)
>          >      >
>          >      > CPU  : AM335X-GP rev 2.1
>          >      > Model: TI AM335x PocketBeagle
>          >      > DRAM:  512 MiB
>          >      > WDT:   Started with servicing (60s timeout)
>          >      > NAND:  0 MiB
>          >      > MMC:   OMAP SD/MMC: 0
>          >      > Loading Environment from FAT... *** Warning - bad CRC, using default
>          >      > environment
>          >      >
>          >      > <ethaddr> not set. Validating first E-fuse MAC
>          >      > Net:   No ethernet found.
>          >      > Hit any key to stop autoboot:  2
>          >      > ```
>          >      >
>          >      > If I hit a key here, I get the u-boot prompt (`=>`) where I find
>          >      > "fastboot". The thing is that none of the fastboot commands I run have any
>          >      > output:
>          >
>          >     This is normal. There will be output only when you issue commands.
>          >
>          >      >
>          >      > * fastboot usb 0
>          >      > * fastboot usb
>          >      > * fastboot udp
>          >      >
>          >      > Now, fastboot udp is not enabled in my defconfig, but the udp gadget
>          >      > support is, and the usb fastboot gadget is enabled, too. From my host, I
>          >      > just don't see anything in the `dmesg` output.
>          >      >
>          >      > Here are a few questions:
>          >      >
>          >      > * Does fastboot usb go over ethernet? If yes, I guess that the "Net: No
>          >      > ethernet found." message is an issue that I need to fix such that a new usb
>          >      > network interface is created by my host, but from my tests with this
>          >      > proprietary device I own, it does not seem to be enumerated as a network
>          >      > interface.
>          >
>          >     Only udp goes over ethernet (though I suppose you could use a
>          >     usb-ethernet gadget/dongle).
>          >
>          >      > * In readthedocs [1], it mentions that "The CONFIG_USB_GADGET_VENDOR_NUM
>          >      > must be one of the numbers supported by the fastboot client." In my setup,
>          >      > it is set to 0x0451, and I did not find what is supposed to be supported in
>          >      > fastboot.cpp [2]. So from the host, I also tried `fastboot -i 0x0451
>          >      > devices`. Is that an issue?
>          >
>          >     The fastboot client detects devices with two bulk endpoints and the
>          >     correct interface (see match_fastboot and filter_usb_device). Generally,
>          >     you will only have to specify the vid/pid/serial if you have multiple
>          >     devices plugged in at once.
>          >
>          >      > * I thought that maybe I should start USB, because the output of `usb tree`
>          >      > says "USB is stopped. Please issue 'usb start' first.". But running `usb
>          >      > start` errors with "Bus usb at 47401800: Port not available.". Is that related
>          >      > to fastboot at all, i.e. should I be concerned about that? And how can I
>          >      > debug it?
>          >
>          >     That's probably why your fastboot isn't working :)
>          >
>          >     You can try debugging it by enabling debug messages. If you want less than
>          >     a firehose, you can try setting the default log level to info, and then
>          >     setting it to debug before running usb start. See [1] for details.
>          >
>          >     [1] https://u-boot.readthedocs.io/en/latest/develop/logging.html
>          >
>          >     --Sean
>          >
>          >      > Thanks in advance for the help!
>          >      > Jonas
>          >      >
>          >      > [1]: https://u-boot.readthedocs.io/en/latest/android/fastboot.html
>          >      > [2]:
>          >      > https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp
>          >      >
>          >
> 

  reply	other threads:[~2021-03-10 23:44 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-06  0:10 Fastboot Jonas Vautherin
2021-03-06  2:20 ` Fastboot Sean Anderson
2021-03-07  1:38   ` Fastboot Jonas Vautherin
2021-03-07  2:04     ` Fastboot Sean Anderson
2021-03-07 18:31       ` Fastboot Jonas Vautherin
2021-03-10 17:43         ` Fastboot Jonas Vautherin
2021-03-10 23:44           ` Sean Anderson [this message]
2021-03-11  0:56             ` Fastboot Jonas Vautherin
2021-03-13  0:15               ` Fastboot Jonas Vautherin
  -- strict thread matches above, loose matches on Subject: below --
2009-05-29 11:13 fastboot Kenneth Johansson
2009-05-29 20:30 ` fastboot John Rigby
2009-05-29 20:45   ` fastboot John Rigby

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e62a6283-e7c3-e41d-47ca-8a8a7de8d136@gmail.com \
    --to=seanga2@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.