public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: balbi@ti.com (Felipe Balbi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 07/12] usb: chipidea: add a usb2 driver for ci13xxx
Date: Thu, 25 Sep 2014 09:09:55 -0500	[thread overview]
Message-ID: <20140925140955.GB28045@saruman> (raw)
In-Reply-To: <2990737.4KzKXPZhaB@wuerfel>

Hi,

On Wed, Sep 24, 2014 at 09:44:19AM +0200, Arnd Bergmann wrote:
> > It is a good suggestion for adding DT support for core driver, Since we did
> > not do it at the first, it is a little embarrass at current situation.
> > 
> > - For the new chipidea glue drivers, it is ok we can have a child node
> > for core device at glue device node, and some common entries can be there
> > like: phy, vbus, dr_mode, etc. We need to add support for getting
> > these common things for both through device tree and platform data
> > (parent is DT support and parent is non-DT support) at core driver.
> 
> I don't really want to see the child devices show up in DT, as this is
> really an implementation detail of the way that the driver currently works,
> and IMHO we should change that.
> 
> I know that Felipe disagrees with me on this, but almost every other
> driver that has soc-specific specializations does not use parent/child
> nodes, neither in DT nor in Linux. Instead you have a single device
> node that gets distinguished by "compatible" string.

I have two answers for this:

1) We need to let different buses use the same device. The same IP can
be used on PCI, platform, OMAP (yes, OMAP is pretty much a bus, even
though we're using platform-bus with a bunch of code to match things),
AMBA, etc.

2) I like to mode the HW in code and if you look into RTL you'll see
that PCIe, OMAP, QCOM, Exynos, etc, take a semi-bus-agnostic core IP and
write a wrapper IP to make it fit into the SoC. That Wrapper is also an
IP of its own and has its own clocks, sometimes its own IRQs. Not to
mention that PM requirements for different architectures might be (and
actually are) different, while PM requirements for the core IP is
"generic" because it comes from IP provider.

By using a parent device, we can hide all platform-/bus-specific details
on the parent driver and keep core driver "pristine". I see many, many
benefits of doing things this way and many of the benefits are already
cooked into the driver model itself, so why not use it ?

> > - For the existing glue drivers, since we can't change existed dts, we can
> > only do it from future SoC support. Then, in this kinds of glue drivers,
> > we need to support for both create core driver by node and by current
> > calling platform_device_add way.
> 
> We should be able to easily change the ci_hdrc_add_device call into
> a different exported function that calls a version of the probe()
> code directly, as we do in all sorts of other drivers (ehci, ohci,
> dwc2, ..., but not dwc3 and musb as they are maintained by Felipe).

Go back a few commits and you'll see EHCI couldn't even be built with
different glues (say ehci-omap and ehci-pci).

> We can also gradually move in some of the other glue drivers into
> the main driver if the differences are small enough.

you'll end up with a bunch of conflicting requirements very soon. In
fact that's one reason for MUSB being a mess. It was, originally, a
single driver with platform-specific glue chosen in build-time. To this
day, we still can't have different DMA glues on the kernel and
TUSB6010-glue doesn't work with anybody else.

When you have a single driver like that, you end up accepting
platform-specific details into the core IP just because the changes are
small enough.

> Moving the PCI driver over to this model requires a little more
> work but is absolutely doable (again, see ehci, ahci, sdhci examples)
> by moving the platform_device handling out of core.c and changing
> it just operate on the plain 'struct device', with an exported
> probe function that gets called on either the platform device
> or the pci device.

sounds like a disaster waiting to happen for me.

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140925/884ce1f4/attachment.sig>

  parent reply	other threads:[~2014-09-25 14:09 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-23 10:27 [PATCH v6 00/12] ARM: berlin: USB support Antoine Tenart
2014-09-23 10:27 ` [PATCH v6 01/12] reset: add the Berlin reset controller driver Antoine Tenart
2014-09-23 10:27 ` [PATCH v6 02/12] Documentation: bindings: add reset bindings docs for Marvell Berlin SoCs Antoine Tenart
2014-09-23 10:27 ` [PATCH v6 03/12] ARM: Berlin: select the reset controller Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 04/12] ARM: dts: berlin: add a required reset property in the chip controller node Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 05/12] phy: add the Berlin USB PHY driver Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 06/12] Documentation: bindings: add doc for the Berlin USB PHY Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 07/12] usb: chipidea: add a usb2 driver for ci13xxx Antoine Tenart
2014-09-23 10:39   ` Arnd Bergmann
2014-09-23 13:36     ` Antoine Tenart
2014-09-23 16:44       ` Arnd Bergmann
2014-09-23 16:55         ` Felipe Balbi
2014-09-23 17:37           ` Arnd Bergmann
2014-09-23 17:43             ` Felipe Balbi
2014-09-24  2:27             ` Peter Chen
2014-09-24  7:44               ` Arnd Bergmann
2014-09-24  8:30                 ` Arnd Bergmann
2014-09-24 11:29                   ` Peter Chen
2014-09-24 12:23                     ` Arnd Bergmann
2014-09-25  0:56                       ` Peter Chen
2014-09-25 14:15                       ` Felipe Balbi
2014-09-25 23:39                         ` Peter Chen
2014-09-26  0:37                           ` Felipe Balbi
2014-09-26  0:39                             ` Felipe Balbi
2014-09-26  7:20                               ` Arnd Bergmann
2014-09-26 15:43                                 ` Felipe Balbi
2014-09-28  0:40                             ` Peter Chen
2014-10-13  8:47                             ` Peter Chen
2014-09-25 14:09                 ` Felipe Balbi [this message]
2014-09-24 23:58   ` Sören Brinkmann
2014-09-29 14:57     ` Antoine Tenart
2014-09-25  1:16   ` Peter Chen
2014-09-25  7:11     ` Arnd Bergmann
2014-09-26  0:23       ` Peter Chen
2014-09-26  7:01         ` Arnd Bergmann
2014-09-25 19:12   ` Arnd Bergmann
2014-09-25 19:54     ` Antoine Tenart
2014-09-29 15:08   ` Antoine Tenart
2014-10-01 12:39     ` Antoine Tenart
2014-09-30  0:12   ` Peter Chen
2014-09-30 10:03     ` Arnd Bergmann
2014-09-30 12:39       ` Peter Chen
2014-09-30 13:43         ` Arnd Bergmann
2014-10-01  6:35           ` Peter Chen
2014-10-01  8:41             ` Arnd Bergmann
2014-10-01 12:25               ` Peter Chen
2014-10-01 23:40     ` Peter Chen
2014-09-23 10:28 ` [PATCH v6 08/12] Documentation: bindings: add doc for the USB2 ChipIdea USB driver Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 09/12] ARM: dts: berlin: add BG2Q nodes for USB support Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 10/12] ARM: dts: Berlin: enable USB on the BG2Q DMP Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 11/12] ARM: dts: berlin: add BG2CD nodes for USB support Antoine Tenart
2014-09-23 10:28 ` [PATCH v6 12/12] ARM: dts: berlin: enable USB on the Google Chromecast Antoine Tenart

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=20140925140955.GB28045@saruman \
    --to=balbi@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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