public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 0/8] usb: driver-model fixes and dm support sunxi-ehci.c
Date: Thu, 30 Apr 2015 21:38:01 +0200	[thread overview]
Message-ID: <55428499.5060501@redhat.com> (raw)
In-Reply-To: <CAPnjgZ36uQ5BkOQLBm8Gk1FiBfCBSLBEoYmLUV6u83q0C3F6=Q@mail.gmail.com>

Hi,

On 30-04-15 16:48, Simon Glass wrote:
> Hi Hans,
>
> On 30 April 2015 at 08:35, Hans de Goede <hdegoede@redhat.com> wrote:
>> Hi Simon and Marek,
>>
>> This series completes my work on converting the sunxi usb/ehci code to
>> the driver model. With this series everything works as it did before,
>> and all the issues I've been seeing when switching to the driver model
>> are resolved.
>>
>> Please review / merge. I think it would be best to merge this through
>> the dm tree.
>
> Great to see this, thanks for all the work and fixes.
>
> I am not too keen on the passing through of struct usb_device, in fact
> I went to some lengths to avoid that.
>
> I'll read through the patches again, but I wonder if we can avoid
> heading in that direction? Conceptually in driver model the device
> does not exist until we find out what it is and can locate a device
> driver.

Right, the problem is that AFAICT the way the driver-model works is
that the driver needs to be known at device creation time, this
probably is a result of the auto alloc mem on behalf of the device
driver feature.

But for usb this is problematic as we need to read descriptors and
whats not before we can find the right driver, and then we do not
want to re-read those descriptors and the driver needs access to
them too.

What you've been doing sofar is in essence passing through
struct usb_device from usb_scan_device to the pre_child_probe
method, with the difference that you've been doing it field by
field. My patch which just adds the maxpacket size to the fields
you're passing (via platdata) also works, but requires re-reading
all the descriptors which is slow(ish) and may upset some devices,
this can be avoided by stuffing more of usb_device into the
plat_data passed from sb_scan_device to the pre_child_probe, but
I decided it would be easier to just pass all of the usb_device

Another slightly cleaner (IMHO) option then copying over the entire
usb_device would be to dynamically alloc usb_device in usb_scan_device,
and keep using the same usb_device all the time, so remove the on
stack copy, and do not auto-alloc the per child data for the uclass
as it is already allocated manually in usb_scan_device.

This effectively gives us the kernel model of allocating the
generic usb_device bits before looking for a driver.

Regards,

Hans

  reply	other threads:[~2015-04-30 19:38 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-30 14:35 [U-Boot] [PATCH 0/8] usb: driver-model fixes and dm support sunxi-ehci.c Hans de Goede
2015-04-30 14:35 ` [U-Boot] [PATCH 1/8] dm: usb: Copy over usb_device values from usb_scan_device() to final usb_device Hans de Goede
2015-05-01  4:11   ` Simon Glass
2015-05-01  7:21     ` Hans de Goede
2015-05-01  8:03       ` Hans de Goede
2015-04-30 14:35 ` [U-Boot] [PATCH 2/8] dm: usb: Use controller_dev in dm ehci code Hans de Goede
2015-05-01  4:11   ` Simon Glass
2015-05-01  8:03     ` Hans de Goede
2015-04-30 14:35 ` [U-Boot] [PATCH 3/8] dm: usb: Store usb_device parent pointer in usb_device Hans de Goede
2015-05-01  4:11   ` Simon Glass
2015-05-01  8:26     ` Hans de Goede
2015-04-30 14:35 ` [U-Boot] [PATCH 4/8] dm: usb: Set desc_before_addr from ehci dm code Hans de Goede
2015-05-01  4:12   ` Simon Glass
2015-04-30 14:35 ` [U-Boot] [PATCH 5/8] dm: usb: Add support for interrupt queues to the dm usb code Hans de Goede
2015-05-01  4:12   ` Simon Glass
2015-04-30 14:35 ` [U-Boot] [PATCH 6/8] dm: usb: Prefix ehci interrupt-queue functions with _ehci_ Hans de Goede
2015-05-01  4:12   ` Simon Glass
2015-04-30 14:35 ` [U-Boot] [PATCH 7/8] dm: usb: Add support for interrupt queues to the dm ehci code Hans de Goede
2015-05-01  4:12   ` Simon Glass
2015-04-30 14:35 ` [U-Boot] [PATCH 8/8] sunxi: ehci: Convert to the driver-model Hans de Goede
2015-05-01  4:12   ` Simon Glass
2015-05-01  8:37     ` Hans de Goede
2015-05-02 14:03   ` Ian Campbell
2015-05-02 14:04     ` Ian Campbell
2015-05-04 14:16     ` Hans de Goede
2015-04-30 14:39 ` [U-Boot] [PATCH 0/8] usb: driver-model fixes and dm support sunxi-ehci.c Hans de Goede
2015-04-30 14:48 ` Simon Glass
2015-04-30 19:38   ` Hans de Goede [this message]
2015-04-30 22:04     ` Simon Glass
2015-05-01  7:17       ` Hans de Goede

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=55428499.5060501@redhat.com \
    --to=hdegoede@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox