From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/6] Integrator devicetree support
Date: Thu, 16 Aug 2012 13:44:55 +0000 [thread overview]
Message-ID: <201208161344.55723.arnd@arndb.de> (raw)
In-Reply-To: <1345119317-22600-1-git-send-email-linus.walleij@linaro.org>
On Thursday 16 August 2012, Linus Walleij wrote:
> This patch set moves all the non-DT platform code into
> #ifndef CONFIG_OF sections for clarity. The plan is to
> delete them after deprecation.
I'm fine with your playing around with this in any way you
like, but I think in general we should have a new CONFIG_ATAG
symbol, so you can build a kernel that supports booting
both with and without DT for the same platform, depending
on what the boot loader supports.
Then you can enclose all the non-DT sections in #ifdef
CONFIG_ATAG and we can remove them at some later stage.
> - The special PCI adapter in the Integrator has to be DT:ed,
> but AFAICT there is still a problem with how to represent
> these things in DT. Any hints/examples, Arnd, Rob?
> arch/arm/mach-integrator/pci_v3.c
PCI bindings are a bit tricky but they are well-defined,
see www.openfirmware.org/ofwg/bindings/pci/pci2_1.pdf
The main thing to understand is the use of 3-cell address
spaces and the interrupt map. Each PCI host must have
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
The "ranges" property is used to transform the PCI
address space into the host address space.
The first cell identifies the device and address space
using a bit-masked notation. The important part to
know here is
0x00000000 config space
0x01000000 I/O space
0x02000000 memory space
0x03000000 64 bit memory space
0x42000000 memory space, prefetchable
0x43000000 64 bit memory space, prefetchable
Each entry in the ranges property consists of 3 cells
for the PCI address start, one cell for a 32 bit parent
but start address where this is mapped, and two cells for
the size.
For your bus, the ranges then would be defined as
ranges = <0x00000000 0x00000000 0x00000000 /* configuration space: */
0x61000000 0x00000000 0x00100000 /* 16 MB at 61000000 */
0x01000000 0x00000000 0x00000000 /* I/O space: */
0x60000000 0x00000000 0x00010000 /* 64KB@0x60000000 */
0x02000000 0x00000000 0x40000000 /* non-prefetchable mem */
0x40000000 0x00000000 0x10000000 /* identity-mapped */
0x42000000 0x00000000 0x50000000 /* prefetchable mem */
0x50000000 0x00000000 0x10000000> /* identity-mapped */
I'm not quite sure if I understood the comments about LB_BASE0 etc
correctly, so it might actually be different.
You also need an interrupt-map, which maps the slots to the
connected irq lines in a board-specific way:
interrupt-map = <
/* IDSEL 9 */
0x4800 0 0 1 &pic 14 /* INT A on slot 9 is irq 14 */
0x4800 0 0 2 &pic 15 /* INT B on slot 9 is irq 15 */
0x4800 0 0 3 &pic 16 /* INT C on slot 9 is irq 16 */
0x4800 0 0 4 &pic 17 /* INT D on slot 9 is irq 17 */
/* IDSEL 10 */
0x5000 0 0 1 &pic 15 /* INT A on slot 10 is irq 15 */
0x5000 0 0 2 &pic 16 /* INT B on slot 10 is irq 16 */
0x5000 0 0 3 &pic 17 /* INT C on slot 10 is irq 17 */
0x5000 0 0 4 &pic 14 /* INT D on slot 10 is irq 18 */
/* IDSEL 11 */
0x5800 0 0 1 &pic 16 /* INT A on slot 11 is irq 16 */
0x5800 0 0 2 &pic 17 /* INT B on slot 11 is irq 17 */
0x5800 0 0 3 &pic 14 /* INT C on slot 11 is irq 18 */
0x5800 0 0 4 &pic 15 /* INT D on slot 11 is irq 14 */
/* IDSEL 12 */
0x6000 0 0 1 &pic 17 /* INT A on slot 12 is irq 17 */
0x6000 0 0 2 &pic 14 /* INT B on slot 12 is irq 14 */
0x6000 0 0 3 &pic 15 /* INT C on slot 12 is irq 15 */
0x6000 0 0 4 &pic 16 /* INT D on slot 12 is irq 16 */
>;
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 0/6] Integrator devicetree support
Date: Thu, 16 Aug 2012 13:44:55 +0000 [thread overview]
Message-ID: <201208161344.55723.arnd@arndb.de> (raw)
In-Reply-To: <1345119317-22600-1-git-send-email-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
On Thursday 16 August 2012, Linus Walleij wrote:
> This patch set moves all the non-DT platform code into
> #ifndef CONFIG_OF sections for clarity. The plan is to
> delete them after deprecation.
I'm fine with your playing around with this in any way you
like, but I think in general we should have a new CONFIG_ATAG
symbol, so you can build a kernel that supports booting
both with and without DT for the same platform, depending
on what the boot loader supports.
Then you can enclose all the non-DT sections in #ifdef
CONFIG_ATAG and we can remove them at some later stage.
> - The special PCI adapter in the Integrator has to be DT:ed,
> but AFAICT there is still a problem with how to represent
> these things in DT. Any hints/examples, Arnd, Rob?
> arch/arm/mach-integrator/pci_v3.c
PCI bindings are a bit tricky but they are well-defined,
see www.openfirmware.org/ofwg/bindings/pci/pci2_1.pdf
The main thing to understand is the use of 3-cell address
spaces and the interrupt map. Each PCI host must have
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
The "ranges" property is used to transform the PCI
address space into the host address space.
The first cell identifies the device and address space
using a bit-masked notation. The important part to
know here is
0x00000000 config space
0x01000000 I/O space
0x02000000 memory space
0x03000000 64 bit memory space
0x42000000 memory space, prefetchable
0x43000000 64 bit memory space, prefetchable
Each entry in the ranges property consists of 3 cells
for the PCI address start, one cell for a 32 bit parent
but start address where this is mapped, and two cells for
the size.
For your bus, the ranges then would be defined as
ranges = <0x00000000 0x00000000 0x00000000 /* configuration space: */
0x61000000 0x00000000 0x00100000 /* 16 MB at 61000000 */
0x01000000 0x00000000 0x00000000 /* I/O space: */
0x60000000 0x00000000 0x00010000 /* 64KB at 0x60000000 */
0x02000000 0x00000000 0x40000000 /* non-prefetchable mem */
0x40000000 0x00000000 0x10000000 /* identity-mapped */
0x42000000 0x00000000 0x50000000 /* prefetchable mem */
0x50000000 0x00000000 0x10000000> /* identity-mapped */
I'm not quite sure if I understood the comments about LB_BASE0 etc
correctly, so it might actually be different.
You also need an interrupt-map, which maps the slots to the
connected irq lines in a board-specific way:
interrupt-map = <
/* IDSEL 9 */
0x4800 0 0 1 &pic 14 /* INT A on slot 9 is irq 14 */
0x4800 0 0 2 &pic 15 /* INT B on slot 9 is irq 15 */
0x4800 0 0 3 &pic 16 /* INT C on slot 9 is irq 16 */
0x4800 0 0 4 &pic 17 /* INT D on slot 9 is irq 17 */
/* IDSEL 10 */
0x5000 0 0 1 &pic 15 /* INT A on slot 10 is irq 15 */
0x5000 0 0 2 &pic 16 /* INT B on slot 10 is irq 16 */
0x5000 0 0 3 &pic 17 /* INT C on slot 10 is irq 17 */
0x5000 0 0 4 &pic 14 /* INT D on slot 10 is irq 18 */
/* IDSEL 11 */
0x5800 0 0 1 &pic 16 /* INT A on slot 11 is irq 16 */
0x5800 0 0 2 &pic 17 /* INT B on slot 11 is irq 17 */
0x5800 0 0 3 &pic 14 /* INT C on slot 11 is irq 18 */
0x5800 0 0 4 &pic 15 /* INT D on slot 11 is irq 14 */
/* IDSEL 12 */
0x6000 0 0 1 &pic 17 /* INT A on slot 12 is irq 17 */
0x6000 0 0 2 &pic 14 /* INT B on slot 12 is irq 14 */
0x6000 0 0 3 &pic 15 /* INT C on slot 12 is irq 15 */
0x6000 0 0 4 &pic 16 /* INT D on slot 12 is irq 16 */
>;
Arnd
next prev parent reply other threads:[~2012-08-16 13:44 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-16 12:15 [PATCH 0/6] Integrator devicetree support Linus Walleij
2012-08-16 12:15 ` Linus Walleij
2012-08-16 13:44 ` Arnd Bergmann [this message]
2012-08-16 13:44 ` Arnd Bergmann
2012-08-18 23:06 ` Linus Walleij
2012-08-18 23:06 ` Linus Walleij
2012-08-19 14:05 ` Arnd Bergmann
2012-08-19 14:05 ` Arnd Bergmann
2012-08-19 15:52 ` Nicolas Pitre
2012-08-19 15:52 ` Nicolas Pitre
2012-08-30 21:01 ` Nicolas Pitre
2012-08-30 21:01 ` Nicolas Pitre
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=201208161344.55723.arnd@arndb.de \
--to=arnd@arndb.de \
--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 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.