All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: Peter Maydell <peter.maydell-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	Linus Walleij
	<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	"arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org"
	<arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Bjorn Helgaas <bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 3/9] ARM: versatile: add DT based PCI detection
Date: Thu, 01 Jan 2015 16:35:42 +0100	[thread overview]
Message-ID: <2544305.Bn9s67VML8@wuerfel> (raw)
In-Reply-To: <CAFEAcA-=2GGEAdnO9+8EV+8OkwUHj3tRiMYWvS4b-cpy6P6rYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Wednesday 31 December 2014 21:07:25 Peter Maydell wrote:
> On 31 December 2014 at 19:22, Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> > On Wed, Dec 31, 2014 at 10:13 AM, Peter Maydell
> > <peter.maydell-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> >> Why would you want to get the bootloader to do this for you when
> >> the hardware provides a perfectly good mechanism for probing
> >> for the existence of the hardware? "Ask the hardware" is always
> >> going to be a more reliable and foolproof way to get the answer
> >> if you can do it -- device tree should just be for the cases where
> >> there is no way to probe. In any case the only way for the boot
> >> loader to determine the correct value to put into the device tree
> >> would be to read the register itself.
> >
> > Only that it is nice to hide all the ugly bits in the
> > bootloader/firmware and DT already provides a standard way to enable
> > or disable h/w. This h/w is not probeable in any sort of standard way.
> 
> This is an embedded system, you were expecting some kind of
> standard?

But that is exactly the point: While we try to ask the hardware about
anything that can be reasonably queried through an in-kernel interface
that talks to the hardware, it works less well when that hardware interface
is rather obscure and (like this one) only used on a few special machines.

Similar examples are Marvell's SoC ID register, which you have to read by
powering on the PCI host bridge and reading the Vendor/Device ID registers
for the root bus, or the 'nvram' on Broadcom's wifi router chips that is
in reality a partition on either NOR or NAND flash. Accessing those at
early boot from a random device driver is a real pain, and it would be
much nicer to have the boot loader read them and put the data into the
DT for us if we had the option. Unfortunately we have to deal with legacy
boot loaders that don't change the DTB.

> > From Table 4.4, I came to the conclusion that the write wasn't really necessary:
> >
> > SYS_PCICTL  0x10000044  Read only  -Read returns a HIGH in bit [0] if
> > a PCI board is present in the expansion backplane.
> >
> > I'll add it back.
> 
> The self-contradictory VersatilePB docs strike again, I see.
> Interestingly, in the PB1176 docs this register is documented
> as definitely read/only:
> 
> # [1]Read only: Reserved.
> #
> # Note
> #
> # On the RealView Platform Baseboard for ARM926EJ-S, this bit
> # was PCICONTROLIN signal and indicated that 66MHz mode was
> # enabled. The PB1176JZF-S only supports 33MHz operation.
> #
> # [0]Read only: Status of P_DETECT pin.
> 
> ...and in passing provides some info about the 926 board that
> isn't in the docs for the 926!
> 
> A little digging suggests that it may in fact be the case
> that the 1176 docs are correct and the write to bit 0 does
> nothing. However the safest thing here is to keep doing
> what the old kernel did, I think.

Agreed. This also means that we need a way to access that register
anyway, and any discussion about finding a way to move the read
access for probing the device elsewhere is moot. A syscon device node
would probably be best, but the current approach also works.

	Arnd
--
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

WARNING: multiple messages have this Message-ID (diff)
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/9] ARM: versatile: add DT based PCI detection
Date: Thu, 01 Jan 2015 16:35:42 +0100	[thread overview]
Message-ID: <2544305.Bn9s67VML8@wuerfel> (raw)
In-Reply-To: <CAFEAcA-=2GGEAdnO9+8EV+8OkwUHj3tRiMYWvS4b-cpy6P6rYg@mail.gmail.com>

On Wednesday 31 December 2014 21:07:25 Peter Maydell wrote:
> On 31 December 2014 at 19:22, Rob Herring <robherring2@gmail.com> wrote:
> > On Wed, Dec 31, 2014 at 10:13 AM, Peter Maydell
> > <peter.maydell@linaro.org> wrote:
> >> Why would you want to get the bootloader to do this for you when
> >> the hardware provides a perfectly good mechanism for probing
> >> for the existence of the hardware? "Ask the hardware" is always
> >> going to be a more reliable and foolproof way to get the answer
> >> if you can do it -- device tree should just be for the cases where
> >> there is no way to probe. In any case the only way for the boot
> >> loader to determine the correct value to put into the device tree
> >> would be to read the register itself.
> >
> > Only that it is nice to hide all the ugly bits in the
> > bootloader/firmware and DT already provides a standard way to enable
> > or disable h/w. This h/w is not probeable in any sort of standard way.
> 
> This is an embedded system, you were expecting some kind of
> standard?

But that is exactly the point: While we try to ask the hardware about
anything that can be reasonably queried through an in-kernel interface
that talks to the hardware, it works less well when that hardware interface
is rather obscure and (like this one) only used on a few special machines.

Similar examples are Marvell's SoC ID register, which you have to read by
powering on the PCI host bridge and reading the Vendor/Device ID registers
for the root bus, or the 'nvram' on Broadcom's wifi router chips that is
in reality a partition on either NOR or NAND flash. Accessing those at
early boot from a random device driver is a real pain, and it would be
much nicer to have the boot loader read them and put the data into the
DT for us if we had the option. Unfortunately we have to deal with legacy
boot loaders that don't change the DTB.

> > From Table 4.4, I came to the conclusion that the write wasn't really necessary:
> >
> > SYS_PCICTL  0x10000044  Read only  -Read returns a HIGH in bit [0] if
> > a PCI board is present in the expansion backplane.
> >
> > I'll add it back.
> 
> The self-contradictory VersatilePB docs strike again, I see.
> Interestingly, in the PB1176 docs this register is documented
> as definitely read/only:
> 
> # [1]Read only: Reserved.
> #
> # Note
> #
> # On the RealView Platform Baseboard for ARM926EJ-S, this bit
> # was PCICONTROLIN signal and indicated that 66MHz mode was
> # enabled. The PB1176JZF-S only supports 33MHz operation.
> #
> # [0]Read only: Status of P_DETECT pin.
> 
> ...and in passing provides some info about the 926 board that
> isn't in the docs for the 926!
> 
> A little digging suggests that it may in fact be the case
> that the 1176 docs are correct and the write to bit 0 does
> nothing. However the safest thing here is to keep doing
> what the old kernel did, I think.

Agreed. This also means that we need a way to access that register
anyway, and any discussion about finding a way to move the read
access for probing the device elsewhere is moot. A syscon device node
would probably be best, but the current approach also works.

	Arnd

  parent reply	other threads:[~2015-01-01 15:35 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-30 19:28 [PATCH 0/9] ARM Versatile multi-platform support Rob Herring
2014-12-30 19:28 ` Rob Herring
     [not found] ` <1419967718-26909-1-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-12-30 19:28   ` [PATCH 1/9] dt/bindings: add versatile PCI binding Rob Herring
2014-12-30 19:28     ` Rob Herring
2014-12-30 19:28   ` [PATCH 2/9] dts: versatile: add PCI controller binding Rob Herring
2014-12-30 19:28     ` Rob Herring
2014-12-30 19:28   ` [PATCH 3/9] ARM: versatile: add DT based PCI detection Rob Herring
2014-12-30 19:28     ` Rob Herring
     [not found]     ` <1419967718-26909-4-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-12-30 21:37       ` Arnd Bergmann
2014-12-30 21:37         ` Arnd Bergmann
2014-12-30 23:05         ` Rob Herring
2014-12-30 23:05           ` Rob Herring
     [not found]           ` <CAL_Jsq+iVWPsN9LXEMT6DmjS7MGsnmgJLgyb33N3me=OcCet6g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-31 15:23             ` Arnd Bergmann
2014-12-31 15:23               ` Arnd Bergmann
2014-12-31 16:13               ` Peter Maydell
2014-12-31 16:13                 ` Peter Maydell
     [not found]                 ` <CAFEAcA9=eoP4-F0Z8J171=DHE5JHVn7ahMnQrHQFz9SHePQHNQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-31 19:22                   ` Rob Herring
2014-12-31 19:22                     ` Rob Herring
     [not found]                     ` <CAL_JsqLBCeCc2VKvHAdG5bBJt=2qmX5BnosdGd_2n+Pb9BhuZQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-31 21:07                       ` Peter Maydell
2014-12-31 21:07                         ` Peter Maydell
     [not found]                         ` <CAFEAcA-=2GGEAdnO9+8EV+8OkwUHj3tRiMYWvS4b-cpy6P6rYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-01 15:35                           ` Arnd Bergmann [this message]
2015-01-01 15:35                             ` Arnd Bergmann
2015-01-01 15:52                             ` Peter Maydell
2015-01-01 15:52                               ` Peter Maydell
2015-01-08 19:37       ` Linus Walleij
2015-01-08 19:37         ` Linus Walleij
     [not found]         ` <CACRpkdYEHwXhw3nEPHp7+4rtzXyh9Qb2QCpsRMfopxNoaX3rLA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-08 21:34           ` Rob Herring
2015-01-08 21:34             ` Rob Herring
2014-12-30 19:28   ` [PATCH 5/9] dts: versatile: add sysregs nodes Rob Herring
2014-12-30 19:28     ` Rob Herring
     [not found]     ` <1419967718-26909-6-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-01-08 19:44       ` Linus Walleij
2015-01-08 19:44         ` Linus Walleij
     [not found]         ` <CACRpkdbinR3Uvi5zZmQJFxJgnWfvE6JZouMVxxRRGVtMNXkBQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-08 23:53           ` Rob Herring
2015-01-08 23:53             ` Rob Herring
     [not found]             ` <CAL_JsqKBLx03E1w0NMH8CH+Pm_L8yQvnR6VTTDxqnpOwAoDhXg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-09  7:10               ` Linus Walleij
2015-01-09  7:10                 ` Linus Walleij
     [not found]                 ` <CACRpkdZFxToT5L0sJXap-NQGtjkryn4KTZVnweKCxXL9WvFLEg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-09 11:53                   ` Lorenzo Pieralisi
2015-01-09 11:53                     ` Lorenzo Pieralisi
2015-01-15 16:06               ` Lorenzo Pieralisi
2015-01-15 16:06                 ` Lorenzo Pieralisi
2015-01-19 10:25                 ` Linus Walleij
2015-01-19 10:25                   ` Linus Walleij
2014-12-30 19:28   ` [PATCH 6/9] ARM: versatile: switch to DT only booting and remove legacy code Rob Herring
2014-12-30 19:28     ` Rob Herring
2014-12-30 19:28   ` [PATCH 7/9] ARM: versatile: move mach includes into mach directory Rob Herring
2014-12-30 19:28     ` Rob Herring
     [not found]     ` <1419967718-26909-8-git-send-email-robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-12-30 22:05       ` Arnd Bergmann
2014-12-30 22:05         ` Arnd Bergmann
2014-12-30 19:28   ` [PATCH 8/9] ARM: versatile: convert to multi-platform Rob Herring
2014-12-30 19:28     ` Rob Herring
2014-12-30 19:28   ` [PATCH 9/9] ARM: versatile: consolidate code to single file Rob Herring
2014-12-30 19:28     ` Rob Herring
2014-12-30 22:08   ` [PATCH 0/9] ARM Versatile multi-platform support Arnd Bergmann
2014-12-30 22:08     ` Arnd Bergmann
2014-12-31  9:25   ` Peter Maydell
2014-12-31  9:25     ` Peter Maydell
     [not found]     ` <CAFEAcA9pKdRNQ-fgKumQhjTjei-4NJ-OB1gSOxTCnCjShy10jw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-05  9:50       ` Marc Zyngier
2015-01-05  9:50         ` Marc Zyngier
     [not found]         ` <54AA5E7C.1040706-5wv7dgnIgG8@public.gmane.org>
2015-01-05 10:08           ` Peter Maydell
2015-01-05 10:08             ` Peter Maydell
     [not found]             ` <CAFEAcA8Nq6BPOerN7EhHpT_oa9W3+2Y_=5+zBuQD_c5fh0Yb1A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-05 11:19               ` Marc Zyngier
2015-01-05 11:19                 ` Marc Zyngier
     [not found]                 ` <87y4ph79wb.fsf-BgpFEFc6EmV6Fr0h90IsVGS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2015-01-05 17:41                   ` Peter Maydell
2015-01-05 17:41                     ` Peter Maydell
2015-01-08 19:47   ` Linus Walleij
2015-01-08 19:47     ` Linus Walleij
     [not found]     ` <CACRpkda8T8CwghVYtTw41h_y+GdCA5xCEaSL1Jy4VZBo3MAy-Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-08 21:38       ` Rob Herring
2015-01-08 21:38         ` Rob Herring
     [not found]         ` <CAL_JsqKLNPVDCUELaZU8JW0roT3RcyqcxtJbvbYQrjzxjt3FeQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-09  8:34           ` Linus Walleij
2015-01-09  8:34             ` Linus Walleij
2014-12-30 19:28 ` [PATCH 4/9] pci: add DT based ARM Versatile PCI host driver Rob Herring
2014-12-30 19:28   ` Rob Herring
2014-12-30 21:58   ` Arnd Bergmann
2014-12-30 21:58     ` Arnd Bergmann
2015-01-02 18:14     ` Rob Herring
2015-01-02 18:14       ` Rob Herring
2015-01-02 20:52       ` Arnd Bergmann
2015-01-02 20:52         ` Arnd Bergmann
2015-01-02 23:13         ` Rob Herring
2015-01-02 23:13           ` Rob Herring
2015-01-05  9:35           ` Arnd Bergmann
2015-01-05  9:35             ` Arnd Bergmann
2015-01-24  1:01     ` Bjorn Helgaas
2015-01-24  1:01       ` Bjorn Helgaas
2015-01-24  0:54   ` Bjorn Helgaas
2015-01-24  0:54     ` Bjorn Helgaas

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=2544305.Bn9s67VML8@wuerfel \
    --to=arnd-r2ngtmty4d4@public.gmane.org \
    --cc=arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
    --cc=peter.maydell-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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 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.