Initial Device Tree support for S3C64xx
Subsystems (8)
v7 cover Initial Device Tree support for S3C64xx
This series adds Device Tree support for Samsung S3C64xx SoC series.
It fixes several problems preventing from booting an S3C64xx-based system using Device Tree, adds all the infrastructure for Device Tree-based board support, including mach-s3c64xx-dt and dts include files for S3C64xx SoCs, and basic device tree source for FriendlyARM Mini6410 and SAMSUNG SMDK6410 boards.
Current support is somewhat limite, but should be fine as a start and will be extended in future, hopefully with help of S3C64xx board maintainers.
Depends on:
- [PATCH v2 0/8] Common Clock Framework support for Samsung S3C64xx
http://thread.gmane.org/gmane.linux.usb.general/90493
On Samsung S3C6410-based Mini6410 and SMDK6410 boards:
Changes since v6:
- Rebased onto current for-next branch of Kgene's tree,
- Dropped the idea of .init_platform() machine callback,
- Added support for i2c controllers,
- Replaced separate apb and ahb nodes with a single common soc node,
- Updated cpus node according to CPU bindings,
- Updated fixed rate clock nodes to use generic bindings,
- Added support for PWM buzzer and I2C EEPROM on Mini6410 board,
- Simplified the condition of skipping legacy GPIO initialization.
Changes since v5:
- Rebased onto current for-next branch of Kgene's tree,
- Added support for new Common Clock Framework based clock driver,
- Introduced hierarchical structure of device nodes (representing physical AHB and APB buses),
- Bypassed most of legacy initialization when booting with DT,
- Used preprocessor macros in dts files to improve readabilty,
- Added support for SMDK6410 board.
Changes since v4:
- Rebased onto current for-next branch of Kgene's tree
- Added support for pinctrl (driver merged through pinctrl tree)
- Added labels to all nodes that can be overridden from board dts
- Modified board dts to use the &label syntax to reference device nodes
Changes since v3:
- Rebased onto current for-next branch of Kgene's tree
- Updated timer node for next version of samsung-time patches
- Replaced local s3c64xx_dt_init_irq with irqchip_init
Changes since v2:
- Updated timer node for next version of samsung-time patches
Changes since v1:
- Dropped two VIC-related patches that are no longer necessary
- Added Device Tree-based instantation of system timers
- Corrected VIC interrupt specifiers
- Adjusted CPU compatible values and dropped @id
Tomasz Figa (7):
ARM: common: vic: Parse interrupt and resume masks from device tree
ARM: s3c64xx: Bypass legacy initialization when booting with DT
gpio: samsung: Skip initialization if device tree is present
ARM: s3c64xx: Add board file for boot using Device Tree
ARM: dts: Add basic dts include files for Samsung S3C64xx SoCs
ARM: dts: Add dts file for S3C6410-based Mini6410 board
ARM: dts: Add dts file for S3C6410-based SMDK6410 board
Documentation/devicetree/bindings/arm/vic.txt | 6 + arch/arm/boot/dts/Makefile | 2 + arch/arm/boot/dts/s3c6400.dtsi | 41 ++ arch/arm/boot/dts/s3c6410-mini6410.dts | 228 +++++++++ arch/arm/boot/dts/s3c6410-smdk6410.dts | 103 ++++ arch/arm/boot/dts/s3c6410.dtsi | 57 +++ arch/arm/boot/dts/s3c64xx-pinctrl.dtsi | 687 ++++++++++++++++++++++++++ arch/arm/boot/dts/s3c64xx.dtsi | 199 ++++++++ arch/arm/mach-s3c64xx/Kconfig | 16 + arch/arm/mach-s3c64xx/Makefile | 1 + arch/arm/mach-s3c64xx/common.c | 12 + arch/arm/mach-s3c64xx/dma.c | 9 + arch/arm/mach-s3c64xx/irq-pm.c | 9 + arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 85 ++++ arch/arm/mach-s3c64xx/s3c6400.c | 9 + arch/arm/mach-s3c64xx/s3c6410.c | 9 + arch/arm/plat-samsung/init.c | 12 +- drivers/gpio/gpio-samsung.c | 34 +- drivers/irqchip/irq-vic.c | 7 +- 19 files changed, 1497 insertions(+), 29 deletions(-) create mode 100644 arch/arm/boot/dts/s3c6400.dtsi create mode 100644 arch/arm/boot/dts/s3c6410-mini6410.dts create mode 100644 arch/arm/boot/dts/s3c6410-smdk6410.dts create mode 100644 arch/arm/boot/dts/s3c6410.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx-pinctrl.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx.dtsi create mode 100644 arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
Signature · 1 line
1.8.3.2
PATCH v7 1/7 ARM: common: vic: Parse interrupt and resume masks from device tree
This patch extends vic_of_init to parse valid interrupt sources and resume sources masks from device tree.
If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
--- Documentation/devicetree/bindings/arm/vic.txt | 6 ++++++ drivers/irqchip/irq-vic.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/arm/vic.txt +6 -0
@@ -18,6 +18,9 @@ Required properties: Optional properties: - interrupts : Interrupt source for parent controllers if the VIC is nested. +- interrupt-mask : Bit mask of valid interrupt sources (defaults to all valid) +- wakeup-mask : Bit mask of interrupt sources that can wake up the system + (defaults to all allowed) Example:
@@ -26,4 +29,7 @@ Example: interrupt-controller; #interrupt-cells = <1>; reg = <0x60000 0x1000>; + + interrupt-mask = <0xffffff7f>; + wakeup-mask = <0x0000ff7f>; };
drivers/irqchip/irq-vic.c +6 -1
@@ -469,6 +469,8 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,int __init vic_of_init (struct device_node *node,struct device_node *parent) {void __iomem *regs; +u32 interrupt_mask = ~0 ; +u32 wakeup_mask = ~0 ;if (WARN (parent,"non-root VICs are not supported" ))return -EINVAL ;
@@ -477,10 +479,13 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent)if (WARN_ON (!regs))return -EIO ; +of_property_read_u32 (node,"interrupt-mask" , &interrupt_mask); +of_property_read_u32 (node,"wakeup-mask" , &wakeup_mask); +/* * Passing 0 as first IRQ makes the simple domain allocate descriptors */ -__vic_init (regs,0 , ~0 , ~0 , node); +__vic_init (regs,0 , interrupt_mask, wakeup_mask, node);return 0 ; }
Signature · 1 line
1.8.3.2
PATCH v7 1/7 ARM: common: vic: Parse interrupt and resume masks from device tree
Documentation/devicetree/bindings/arm/vic.txt Required properties: · line 23
Quoted 8 lines · Tomasz Figa
+++
b/Documentation/devicetree/bindings/arm/vic.txtDocumentation/devicetree/bindings/arm/vic.txt +3
-0@@ -18,6 +18,9 @@ Required properties: Optional properties: - interrupts : Interrupt source for parent controllers if the VIC is nested. +- interrupt-mask : Bit mask of valid interrupt sources (defaults to all valid) +- wakeup-mask : Bit mask of interrupt sources that can wake up the system + (defaults to all allowed)
The "interrupt-mask" is called "valid-mask" on the FPGA IRQ controller See Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt
Example:
reg = <0x10000040 0x100>;
clear-mask = <0xffffffff>;
valid-mask = <0x00000007>;Please use the same name.
(wakeup-mask is fine).
Yours,
Linus Walleij
PATCH v7 1/7 ARM: common: vic: Parse interrupt and resume masks from device tree
Quoted 1 line · On Thursday 22 of August 2013 01:19:34 Linus Walleij wrote:
On Wed, Aug 21, 2013 at 11:21 PM, Tomasz Figa <[email protected]>
Quoted 15 lines · wrote:
Quoted 10 lines
+++
b/Documentation/devicetree/bindings/arm/vic.txt(quoted diff) +1
-0@@ -18,6 +18,9 @@ Required properties: Optional properties: - interrupts : Interrupt source for parent controllers if the VIC is nested.> +- interrupt-mask : Bit mask of valid interrupt sources (defaults toall valid) +- wakeup-mask : Bit mask of interrupt sources that can wake up the system + (defaults to all allowed)
The "interrupt-mask" is called "valid-mask" on the FPGA IRQ controller See
Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt
Quoted 7 lines
Example:
reg = <0x10000040 0x100>; clear-mask = <0xffffffff>; valid-mask = <0x00000007>;Please use the same name.
Oh, I haven't noticed that. Thanks for the information.
Best regards,
Tomasz
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
In reply to Tomasz FigaThis patch extends vic_of_init to parse valid interrupt sources and resume sources masks from device tree.
If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
--- Documentation/devicetree/bindings/arm/vic.txt | 6 ++++++ drivers/irqchip/irq-vic.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-)
Changes since v7:
- Renamed interrupt-mask property to valid-mask, for consistency with bindings of other interrupt controllers.
Documentation/devicetree/bindings/arm/vic.txt +6 -0
@@ -18,6 +18,9 @@ Required properties: Optional properties: - interrupts : Interrupt source for parent controllers if the VIC is nested. +- valid-mask : Bit mask of valid interrupt sources (defaults to all valid) +- wakeup-mask : Bit mask of interrupt sources that can wake up the system + (defaults to all allowed) Example:
@@ -26,4 +29,7 @@ Example: interrupt-controller; #interrupt-cells = <1>; reg = <0x60000 0x1000>; + + valid-mask = <0xffffff7f>; + wakeup-mask = <0x0000ff7f>; };
drivers/irqchip/irq-vic.c +6 -1
@@ -469,6 +469,8 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,int __init vic_of_init (struct device_node *node,struct device_node *parent) {void __iomem *regs; +u32 interrupt_mask = ~0 ; +u32 wakeup_mask = ~0 ;if (WARN (parent,"non-root VICs are not supported" ))return -EINVAL ;
@@ -477,10 +479,13 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent)if (WARN_ON (!regs))return -EIO ; +of_property_read_u32 (node,"valid-mask" , &interrupt_mask); +of_property_read_u32 (node,"wakeup-mask" , &wakeup_mask); +/* * Passing 0 as first IRQ makes the simple domain allocate descriptors */ -__vic_init (regs,0 , ~0 , ~0 , node); +__vic_init (regs,0 , interrupt_mask, wakeup_mask, node);return 0 ; }
Signature · 1 line
1.8.3.2
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
Quoted 7 lines · Tomasz Figa
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Signed-off-by Tomasz Figa <[email protected]>
Quoted 8 lines
--- Documentation/devicetree/bindings/arm/vic.txt | 6 ++++++ drivers/irqchip/irq-vic.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-)Changes since v7:
- Renamed interrupt-mask property to valid-mask, for consistency with bindings of other interrupt controllers.
Yours,
Linus Walleij
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
In reply to Tomasz FigaQuoted 5 lines · Tomasz Figa
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Can you explain further why the VIC needs this information up-front? Presumably it can accumulate it as devices request interrupts.
Documentation/devicetree/bindings/arm/vic.txt Required properties: · line 21
Quoted 3 lines
Documentation/devicetree/bindings/arm/vic.txt +1
-0+- valid-mask : Bit mask of valid interrupt sources (defaults to all valid)
Until a device requests an interrupt, it can be left disabled. Once something does request it, it gets enabled. If nothing requests it, it never gets enabled. Doesn't the result of that logic end up being the same thing as valid-mask represents? The only difference would be if some device requests an invalid interrupt source, but then why not just fix the interrupt client instead of adding this property to reject the request?
Quoted 2 lines
+- wakeup-mask : Bit mask of interrupt sources that can wake up the system + (defaults to all allowed)
Shouldn't drivers for end-devices request interrupts, and then set wake enable on those interrupts, which would then trickle up the IRQ chain to tell the VIC which interrupts to enable wakeup on?
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
Quoted 9 lines · On Friday 23 of August 2013 16:11:18 Stephen Warren wrote:
Quoted 5 lines · Tomasz Figa
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Can you explain further why the VIC needs this information up-front? Presumably it can accumulate it as devices request interrupts.
It does not need this information just for operation, but this makes the hardware description more detailed and allows better sanity checking of interrupts being requested.
To clarify, this is a mask of valid interrupt sources of the VIC, where set bit indicates that given signal is wired and clear bit that it is not.
Quoted 12 lines
Quoted 5 lines
Documentation/devicetree/bindings/arm/vic.txt +1
-0+- valid-mask : Bit mask of valid interrupt sources (defaults to allvalid)
Until a device requests an interrupt, it can be left disabled. Once something does request it, it gets enabled. If nothing requests it, it never gets enabled. Doesn't the result of that logic end up being the same thing as valid-mask represents? The only difference would be if some device requests an invalid interrupt source, but then why not just fix the interrupt client instead of adding this property to reject the request?
This property does not have anything to do with enabling or disabling (aka unmasking/masking) of interrupts. It just lists valid interrupt signals of given VIC.
Quoted 6 lines
Quoted 2 lines
+- wakeup-mask : Bit mask of interrupt sources that can wake up the system + (defaults to all allowed)Shouldn't drivers for end-devices request interrupts, and then set wake enable on those interrupts, which would then trickle up the IRQ chain to tell the VIC which interrupts to enable wakeup on?
This is the same as previous property. It does not have anything to do with requesting particular signal to wake up the system, but rather indicating that particular signal _can_ be requested to do so.
Again, this is not strictly needed for correct operation, but this way you wouldn't get any sanity check over wake up signals being requested.
Best regards,
Tomasz
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
Quoted 8 lines · Tomasz Figa
Quoted 7 lines · On Friday 23 of August 2013 16:11:18 Stephen Warren wrote:
Quoted 5 lines · Tomasz Figa
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Quoted 6 lines
Quoted 2 lines
Can you explain further why the VIC needs this information up-front? Presumably it can accumulate it as devices request interrupts.
It does not need this information just for operation, but this makes the hardware description more detailed and allows better sanity checking of interrupts being requested.
Ah, OK. It may be worth mentioning the intent of the properties. I suppose this is purely a representation of HW then, so it's reasonable to include it in the binding. I'm not sure /quite/ how useful it is; after all the error-checking that it enables will never trigger assuming the rest of the DT is written to "request" the correct interrupts. However, I guess there is little harm in allowing these properties.
Bikeshedding a bit, but perhaps rename wakeup-mask to valid-wakeup-mask (and perhaps valid-mask to valid-source-mask for consistency, although I see you already renamed that to be consistent with other bindings...)? To me, wakeup-mask sounds like a configuration of which sources should be configured to wakeup the system; something to do with configuration/policy rather than HW capabilities.
Either way, the binding,
(I assume those 2 new properties always have 1 cell since the controller can only support up to 32 IRQ sources? If not, then perhaps add wording to describe how long the properties should be).
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
Quoted 9 lines · On Friday 23 of August 2013 17:19:50 Stephen Warren wrote:
Quoted 8 lines · Tomasz Figa
Quoted 7 lines · On Friday 23 of August 2013 16:11:18 Stephen Warren wrote:
Quoted 5 lines · Tomasz Figa
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines
Can you explain further why the VIC needs this information up-front? Presumably it can accumulate it as devices request interrupts.
It does not need this information just for operation, but this makes the hardware description more detailed and allows better sanity checking of interrupts being requested.
Ah, OK. It may be worth mentioning the intent of the properties.
Right, a bit more detailed description will be nice indeed. I didn't think such thing like this is so uncommon to need such.
Quoted 6 lines
I
suppose this is purely a representation of HW then, so it's reasonable to include it in the binding. I'm not sure /quite/ how useful it is; after all the error-checking that it enables will never trigger assuming the rest of the DT is written to "request" the correct interrupts. However, I guess there is little harm in allowing these properties.
Well, the valid-mask is indeed a bit redundant (although might let you spot errors in interrupt specification in your device tree faster), but wakeup-mask is something that prevents drivers from incorrectly thinking that an interrupt can wake the system up, while it can't. Otherwise enable_irq_wake() wouldn't know when to return an error.
Quoted 6 lines
Bikeshedding a bit, but perhaps rename wakeup-mask to valid-wakeup-mask (and perhaps valid-mask to valid-source-mask for consistency, although I see you already renamed that to be consistent with other bindings...)? To me, wakeup-mask sounds like a configuration of which sources should be configured to wakeup the system; something to do with configuration/policy rather than HW capabilities.
Yes, valid-wakeup-mask sounds reasonably to me. The valid-mask property has been taken from bindings/arm/versatile-fpga-irq.txt, as suggested by Linus Walleij.
Quoted 2 lines
Either way, the binding,
Acked-by Stephen Warren <[email protected]>
Thanks.
Quoted 3 lines
(I assume those 2 new properties always have 1 cell since the controller can only support up to 32 IRQ sources? If not, then perhaps add wording to describe how long the properties should be).
Correct, one VIC can support up to 32 interrupt sources. A word on this in binding description will be nice indeed.
Best regards,
Tomasz
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
In reply to Tomasz FigaQuoted 11 lines · Tomasz Figa
Quoted 9 lines · On Friday 23 of August 2013 16:11:18 Stephen Warren wrote:
Quoted 5 lines · Tomasz Figa
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Can you explain further why the VIC needs this information up-front? Presumably it can accumulate it as devices request interrupts.
Quoted 6 lines
It does not need this information just for operation, but this makes the hardware description more detailed and allows better sanity checking of interrupts being requested.
To clarify, this is a mask of valid interrupt sources of the VIC, where set bit indicates that given signal is wired and clear bit that it is not.
I agree with Stephen here. The valid interrupts are the ones in the DT. The reserved ones are the ones not present. If it is not needed for the operation of the VIC, then remove it. The argument of sanity checking could apply to all interrupt controllers.
Rob
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
Quoted 1 line · On Saturday 24 of August 2013 10:25:26 Rob Herring wrote:
On Fri, Aug 23, 2013 at 6:04 PM, Tomasz Figa <[email protected]>
Quoted 15 lines · wrote:
Quoted 15 lines · On Friday 23 of August 2013 16:11:18 Stephen Warren wrote:
Quoted 9 lines · Tomasz Figa
Quoted 5 lines
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Can you explain further why the VIC needs this information up-front? Presumably it can accumulate it as devices request interrupts.
It does not need this information just for operation, but this makes the hardware description more detailed and allows better sanity checking of interrupts being requested.
Quoted 8 lines
Quoted 4 lines
To clarify, this is a mask of valid interrupt sources of the VIC, where
set bit indicates that given signal is wired and clear bit that it is not.I agree with Stephen here. The valid interrupts are the ones in the DT. The reserved ones are the ones not present. If it is not needed for the operation of the VIC, then remove it. The argument of sanity checking could apply to all interrupt controllers.
Sorry, but I don't get what's wrong in having a more detailed description than required just for operation of the hardware.
The feature of sanity checks based on interrupt_mask (here now called valid-mask) has been present in the VIC driver since a long time already (if not from the beginning of existence of this driver) and before we started using DT, the mask was being passed from platform code as VIC init function argument.
I'd prefer this feature to be available when using DT as well, unless we really want to move things backwards, just because we want to use DT...
Best regards,
Tomasz
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
Quoted 27 lines · Tomasz Figa
Quoted 1 line · On Saturday 24 of August 2013 10:25:26 Rob Herring wrote:
On Fri, Aug 23, 2013 at 6:04 PM, Tomasz Figa <[email protected]>
Quoted 15 lines · wrote:
Quoted 15 lines · On Friday 23 of August 2013 16:11:18 Stephen Warren wrote:
Quoted 9 lines · Tomasz Figa
Quoted 5 lines
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Can you explain further why the VIC needs this information up-front? Presumably it can accumulate it as devices request interrupts.
It does not need this information just for operation, but this makes the hardware description more detailed and allows better sanity checking of interrupts being requested.
Quoted 8 lines
Quoted 4 lines
To clarify, this is a mask of valid interrupt sources of the VIC, where
set bit indicates that given signal is wired and clear bit that it is not.I agree with Stephen here. The valid interrupts are the ones in the DT. The reserved ones are the ones not present. If it is not needed for the operation of the VIC, then remove it. The argument of sanity checking could apply to all interrupt controllers.
Quoted 8 lines
Sorry, but I don't get what's wrong in having a more detailed description than required just for operation of the hardware.
The feature of sanity checks based on
interrupt_mask(here now called valid-mask) has been present in the VIC driver since a long time already (if not from the beginning of existence of this driver) and before we started using DT, the mask was being passed from platform code as VIC init function argument.
So we should base the binding on the Linux software design?
Quoted 2 lines
I'd prefer this feature to be available when using DT as well, unless we really want to move things backwards, just because we want to use DT...
As I mentioned all these arguments apply to ALL interrupt controllers except ones which a mask does not work. So IF this makes sense, then this should be a generic property and generic code to support.
You simply have the same information twice. One is distributed and one is centralized. While it adds a way to validate things it also adds a way to introduce errors. Suppose someone writes a dts such that valid-mask matches the irq lines present in that dts (simply because they were lazy or don't have documentation of all interrupt lines). Then you go add a node with a new interrupt (because the initial dts was not complete). Updating the valid-mask could very easily be forgotten. Yes, this should all be found by testing, but people don't always have access to all the h/w. This issue would also not likely be obvious in a review.
Rob
PATCH v8 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
Quoted 35 lines · On Saturday 24 of August 2013 11:35:03 Rob Herring wrote:
Quoted 34 lines · Tomasz Figa
Quoted 1 line · On Saturday 24 of August 2013 10:25:26 Rob Herring wrote:
On Fri, Aug 23, 2013 at 6:04 PM, Tomasz Figa <[email protected]>
Quoted 22 lines · wrote:
Quoted 16 lines · On Friday 23 of August 2013 16:11:18 Stephen Warren wrote:
Quoted 10 lines · Tomasz Figa
Quoted 5 lines
This patch extends
vic_of_initto parse valid interrupt sources and resume sources masks from device tree.If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
Can you explain further why the VIC needs this information up-front?
Presumably it can accumulate it as devices request interrupts.It does not need this information just for operation, but this makes the hardware description more detailed and allows better sanity checking of interrupts being requested.
Quoted 5 lines
To clarify, this is a mask of valid interrupt sources of the VIC, where
set bit indicates that given signal is wired and clear bit that it is
not.Quoted 4 lines
I agree with Stephen here. The valid interrupts are the ones in the DT. The reserved ones are the ones not present. If it is not needed for the operation of the VIC, then remove it. The argument of sanity checking could apply to all interrupt controllers.
Sorry, but I don't get what's wrong in having a more detailed description than required just for operation of the hardware.
Quoted 7 lines
Quoted 5 lines
The feature of sanity checks based on
interrupt_mask(here now called valid-mask) has been present in the VIC driver since a long time already (if not from the beginning of existence of this driver) and before we started using DT, the mask was being passed from platform code as VIC init function argument.So we should base the binding on the Linux software design?
I would put it different way: The binding should provide information detailed enough to allow any features allowed by Linux software design.
Well, anyway, I don't believe that existing, pre-ARM, bindings wasn't influenced by how things worked on PowerPC platforms and software running on them (including OpenFirmware and OS'es like Linux).
Quoted 6 lines
Quoted 3 lines
I'd prefer this feature to be available when using DT as well, unless we really want to move things backwards, just because we want to use DT...
As I mentioned all these arguments apply to ALL interrupt controllers except ones which a mask does not work. So IF this makes sense, then this should be a generic property and generic code to support.
Isn't a binding of particular device free to define a private property? Anyway, I wouldn't be opposed to making it generic.
Quoted 1 line
You simply have the same information twice. One is distributed
Assuming you have it specified correctly under client nodes.
Quoted 5 lines
and one
is centralized. While it adds a way to validate things it also adds a way to introduce errors. Suppose someone writes a dts such that valid-mask matches the irq lines present in that dts (simply because they were lazy or don't have documentation of all interrupt lines).
That's why this property is optional. If you don't know how this is set up on your hardware then you don't fill it with a random value, but just skip it instead.
Quoted 5 lines
Then
you go add a node with a new interrupt (because the initial dts was not complete). Updating the valid-mask could very easily be forgotten. Yes, this should all be found by testing, but people don't always have access to all the h/w.
Adding a node with a new interrupt usually means adding support for new hardware. This is something I wouldn't really want to see submitted untested...
Anyway, since I'd like this series to be merged ASAP and this patch is not strictly necessary, especially this optional sanity check, let me just drop this property and move on with other things...
Best regards,
Tomasz
PATCH v9 1/7 irqchip: vic: Parse interrupt and resume masks from device tree
In reply to Tomasz FigaThis patch extends vic_of_init to parse valid interrupt sources and resume sources masks from device tree.
If mask values are not specified in device tree, all sources are assumed to be valid, as before this patch.
--- Documentation/devicetree/bindings/arm/vic.txt | 12 ++++++++++++ drivers/irqchip/irq-vic.c | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-)
Changes since v8:
- Renamed wakeup-mask property to valid-wakeup-mask.
- Extended description of valid-mask and valid-wakeup-mask properties.
Documentation/devicetree/bindings/arm/vic.txt +12 -0
@@ -18,6 +18,15 @@ Required properties: Optional properties: - interrupts : Interrupt source for parent controllers if the VIC is nested. +- valid-mask : A one cell big bit mask of valid interrupt sources. Each bit + represents single interrupt source, starting from source 0 at LSb and ending + at source 31 at MSb. A bit that is set means that the source is wired and + clear means otherwise. If unspecified, defaults to all valid. +- valid-wakeup-mask : A one cell big bit mask of interrupt sources that can be + configured as wake up source for the system. Order of bits is the same as for + valid-mask property. A set bit means that this interrupt source can be + configured as a wake up source for the system. If unspecied, defaults to all + interrupt sources configurable as wake up sources. Example:
@@ -26,4 +35,7 @@ Example: interrupt-controller; #interrupt-cells = <1>; reg = <0x60000 0x1000>; + + valid-mask = <0xffffff7f>; + valid-wakeup-mask = <0x0000ff7f>; };
drivers/irqchip/irq-vic.c +6 -1
@@ -469,6 +469,8 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,int __init vic_of_init (struct device_node *node,struct device_node *parent) {void __iomem *regs; +u32 interrupt_mask = ~0 ; +u32 wakeup_mask = ~0 ;if (WARN (parent,"non-root VICs are not supported" ))return -EINVAL ;
@@ -477,10 +479,13 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent)if (WARN_ON (!regs))return -EIO ; +of_property_read_u32 (node,"valid-mask" , &interrupt_mask); +of_property_read_u32 (node,"valid-wakeup-mask" , &wakeup_mask); +/* * Passing 0 as first IRQ makes the simple domain allocate descriptors */ -__vic_init (regs,0 , ~0 , ~0 , node); +__vic_init (regs,0 , interrupt_mask, wakeup_mask, node);return 0 ; }
Signature · 1 line
1.8.3.2
PATCH v7 2/7 ARM: s3c64xx: Bypass legacy initialization when booting with DT
In reply to Tomasz FigaThis patch allows bypassing most of legacy initialization when booting an S3C64xx-based board using device tree, by adding conditional checks for DT presence to initcalls which are no longer necessary when booting with DT..
--- arch/arm/mach-s3c64xx/common.c | 12 ++++++++++++ arch/arm/mach-s3c64xx/dma.c | 9 +++++++++ arch/arm/mach-s3c64xx/irq-pm.c | 9 +++++++++ arch/arm/mach-s3c64xx/s3c6400.c | 9 +++++++++ arch/arm/mach-s3c64xx/s3c6410.c | 9 +++++++++ arch/arm/plat-samsung/init.c | 12 +++++++++++- 6 files changed, 59 insertions(+), 1 deletion(-)
arch/arm/mach-s3c64xx/common.c +12 -0
@@ -14,6 +14,10 @@* published by the Free Software Foundation. */ +/* +* NOTE: Code in this file is not used when booting with Device Tree support. +*/ +#include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h>
@@ -203,6 +207,10 @@ void __init s3c64xx_init_io(struct map_desc *mach_desc, int size)static __init int s3c64xx_dev_init (void ) { +/* Not applicable when using DT. */ +if (of_have_populated_dt ()) +return 0 ; +subsys_system_register (&s3c64xx_subsys,NULL );return device_register (&s3c64xx_dev); }
@@ -404,6 +412,10 @@ static int __init s3c64xx_init_irq_eint(void) {int irq; +/* On DT-enabled systems EINTs are handled by pinctrl-s3c64xx driver. */ +if (of_have_populated_dt ()) +return -ENODEV ; +for (irq =IRQ_EINT (0 ); irq <=IRQ_EINT (27 ); irq++) {irq_set_chip_and_handler (irq, &s3c_irq_eint, handle_level_irq);irq_set_chip_data (irq, (void *)eint_irq_to_bit (irq));
arch/arm/mach-s3c64xx/dma.c +9 -0
@@ -12,6 +12,10 @@* published by the Free Software Foundation. */ +/* +* NOTE: Code in this file is not used when booting with Device Tree support. +*/ +#include <linux/kernel.h> #include <linux/module.h> #include <linux/interrupt.h>
@@ -24,6 +28,7 @@#include <linux/err.h> #include <linux/io.h> #include <linux/amba/pl080.h> +#include <linux/of.h> #include <mach/dma.h> #include <mach/map.h>
@@ -726,6 +731,10 @@ static int __init s3c64xx_dma_init(void) {int ret; +/* This driver is not supported when booting with device tree. */ +if (of_have_populated_dt ()) +return -ENODEV ; +printk (KERN_INFO "%s: Registering DMA channels\n" , __func__); dma_pool =dma_pool_create ("DMA-LLI" ,NULL ,sizeof (struct pl080s_lli ),16 ,0 );
arch/arm/mach-s3c64xx/irq-pm.c +9 -0
@@ -12,12 +12,17 @@* published by the Free Software Foundation. */ +/* +* NOTE: Code in this file is not used when booting with Device Tree support. +*/ +#include <linux/kernel.h> #include <linux/syscore_ops.h> #include <linux/interrupt.h> #include <linux/serial_core.h> #include <linux/irq.h> #include <linux/io.h> +#include <linux/of.h> #include <mach/map.h>
@@ -101,6 +106,10 @@ static struct syscore_ops s3c64xx_irq_syscore_ops = {static __init int s3c64xx_syscore_init (void ) { +/* Appropriate drivers (pinctrl, uart) handle this when using DT. */ +if (of_have_populated_dt ()) +return 0 ; +register_syscore_ops (&s3c64xx_irq_syscore_ops);return 0 ;
arch/arm/mach-s3c64xx/s3c6400.c +9 -0
@@ -9,6 +9,10 @@* published by the Free Software Foundation. */ +/* +* NOTE: Code in this file is not used when booting with Device Tree support. +*/ +#include <linux/kernel.h> #include <linux/types.h> #include <linux/interrupt.h>
@@ -20,6 +24,7 @@#include <linux/device.h> #include <linux/serial_core.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
@@ -76,6 +81,10 @@ static struct device s3c6400_dev = {static int __init s3c6400_core_init (void ) { +/* Not applicable when using DT. */ +if (of_have_populated_dt ()) +return 0 ; +return subsys_system_register (&s3c6400_subsys,NULL ); }
arch/arm/mach-s3c64xx/s3c6410.c +9 -0
@@ -10,6 +10,10 @@* published by the Free Software Foundation. */ +/* +* NOTE: Code in this file is not used when booting with Device Tree support. +*/ +#include <linux/kernel.h> #include <linux/types.h> #include <linux/interrupt.h>
@@ -21,6 +25,7 @@#include <linux/device.h> #include <linux/serial_core.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <asm/mach/arch.h> #include <asm/mach/map.h>
@@ -79,6 +84,10 @@ static struct device s3c6410_dev = {static int __init s3c6410_core_init (void ) { +/* Not applicable when using DT. */ +if (of_have_populated_dt ()) +return 0 ; +return subsys_system_register (&s3c6410_subsys,NULL ); }
arch/arm/plat-samsung/init.c +11 -1
@@ -11,12 +11,18 @@* published by the Free Software Foundation. */ +/* +* NOTE: Code in this file is not used on S3C64xx when booting with +* Device Tree support. +*/ +#include <linux/init.h> #include <linux/module.h> #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/serial_core.h> #include <linux/platform_device.h> +#include <linux/of.h> #include <mach/hardware.h>
@@ -148,8 +154,12 @@ static int __init s3c_arch_init(void)// do the correct init for cpu -if (cpu ==NULL ) +if (cpu ==NULL ) { +/* Not needed when booting with device tree. */ +if (of_have_populated_dt ()) +return 0 ;panic ("s3c_arch_init: NULL cpu\n" ); + } ret = (cpu->init)();if (ret !=0 )
Signature · 1 line
1.8.3.2
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
In reply to Tomasz FigaSince this driver does not handle GPIO on device tree enabled platforms any more, it should be bypassed whenever device tree is available, to not conflict with the new pinctrl-samsung driver.
--- drivers/gpio/gpio-samsung.c | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-)
drivers/gpio/gpio-samsung.c +7 -27
@@ -2949,34 +2949,14 @@ static __init int samsung_gpiolib_init(void)int i, nr_chips;int group =0 ; -#if defined(CONFIG_PINCTRL_EXYNOS ) || defined(CONFIG_PINCTRL_EXYNOS5440 )/* -* This gpio driver includes support for device tree support and there -* are platforms using it. In order to maintain compatibility with those -* platforms, and to allow non-dt Exynos4210 platforms to use this -* gpiolib support, a check is added to find out if there is a active -* pin-controller driver support available. If it is available, this -* gpiolib support is ignored and the gpiolib support available in -* pin-controller driver is used. This is a temporary check and will go -* away when all of the Exynos4210 platforms have switched to using -* device tree and the pin-ctrl driver. -*/ -struct device_node *pctrl_np; -static const struct of_device_id exynos_pinctrl_ids[] = { - { .compatible ="samsung,s3c2412-pinctrl" , }, - { .compatible ="samsung,s3c2416-pinctrl" , }, - { .compatible ="samsung,s3c2440-pinctrl" , }, - { .compatible ="samsung,s3c2450-pinctrl" , }, - { .compatible ="samsung,exynos4210-pinctrl" , }, - { .compatible ="samsung,exynos4x12-pinctrl" , }, - { .compatible ="samsung,exynos5250-pinctrl" , }, - { .compatible ="samsung,exynos5440-pinctrl" , }, - { } - }; -for_each_matching_node (pctrl_np, exynos_pinctrl_ids) -if (pctrl_np &&of_device_is_available (pctrl_np)) -return -ENODEV ; -#endif +* Currently there are two drivers that can provide GPIO support for +* Samsung SoCs. For device tree enabled platforms, the new +* pinctrl-samsung driver is used, providing both GPIO and pin control +* interfaces. For legacy (non-DT) platforms this driver is used. +*/ +if (of_have_populated_dt ()) +return -ENODEV ;samsung_gpiolib_set_cfg (samsung_gpio_cfgs,ARRAY_SIZE (samsung_gpio_cfgs));
Signature · 1 line
1.8.3.2
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
Quoted 5 lines · Tomasz Figa
Since this driver does not handle GPIO on device tree enabled platforms any more, it should be bypassed whenever device tree is available, to not conflict with the new pinctrl-samsung driver.
Signed-off-by Tomasz Figa <[email protected]>
This seems like something I should apply to the GPIO tree right now, shall I?
Yours,
Linus Walleij
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
Quoted 1 line · On Thursday 22 of August 2013 01:21:25 Linus Walleij wrote:
On Wed, Aug 21, 2013 at 11:21 PM, Tomasz Figa <[email protected]>
Quoted 9 lines · wrote:
Quoted 6 lines
Since this driver does not handle GPIO on device tree enabled platforms
any more, it should be bypassed whenever device tree is available, to not conflict with the new pinctrl-samsung driver.Signed-off-by Tomasz Figa <[email protected]>This seems like something I should apply to the GPIO tree right now, shall I?
Would be nice, but since this patch is a dependency for rest of this series and there are no other dependencies on GPIO tree, it might be easier to just let Kukjin take all the patches with required Acks.
Best regards,
Tomasz
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
Quoted 8 lines · Tomasz Figa
Quoted 2 lines · On Thursday 22 of August 2013 01:21:25 Linus Walleij wrote:
This seems like something I should apply to the GPIO tree right now, shall I?
Would be nice, but since this patch is a dependency for rest of this series and there are no other dependencies on GPIO tree, it might be easier to just let Kukjin take all the patches with required Acks.
Though if the rest of the series might miss v3.12 (seems likely given
the arm-soc deadlines have passed) then Linus could apply this for
v3.12?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130822/03637f11/attachment-0001.sig>
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
In reply to Tomasz FigaQuoted 9 lines · Tomasz Figa
Quoted 1 line · On Thursday 22 of August 2013 01:21:25 Linus Walleij wrote:
On Wed, Aug 21, 2013 at 11:21 PM, Tomasz Figa <[email protected]>
Quoted 5 lines · wrote:
Quoted 5 lines
Since this driver does not handle GPIO on device tree enabled platforms
any more, it should be bypassed whenever device tree is available, to not conflict with the new pinctrl-samsung driver.
Quoted 9 lines
Quoted 4 lines
Quoted 1 line
Signed-off-by Tomasz Figa <[email protected]>This seems like something I should apply to the GPIO tree right now, shall I?
Would be nice, but since this patch is a dependency for rest of this series and there are no other dependencies on GPIO tree, it might be easier to just let Kukjin take all the patches with required Acks.
Oh, I didn't see any dependencies...but if so, Linus do you agree with Tomasz' opinion?
Please let me know so that I could take this with others into the samsung tree. And please kindly ignore my previous reply on this ;-)
Thanks,
Kukjin
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
Quoted 17 lines · On Thursday 22 of August 2013 18:59:23 Kukjin Kim wrote:
Quoted 16 lines · Tomasz Figa
Quoted 2 lines · On Thursday 22 of August 2013 01:21:25 Linus Walleij wrote:
On Wed, Aug 21, 2013 at 11:21 PM, Tomasz Figa
<[email protected]>Quoted 10 lines · wrote:
Quoted 7 lines
Since this driver does not handle GPIO on device tree enabled platforms
any more, it should be bypassed whenever device tree is available, to
not conflict with the new pinctrl-samsung driver.Signed-off-by Tomasz Figa <[email protected]>This seems like something I should apply to the GPIO tree right now, shall I?
Quoted 6 lines
Quoted 3 lines
Would be nice, but since this patch is a dependency for rest of this series and there are no other dependencies on GPIO tree, it might be easier to just let Kukjin take all the patches with required Acks.
Oh, I didn't see any dependencies...but if so, Linus do you agree with Tomasz' opinion?
Without this patch DT-based bootup would fail, because the legacy GPIO driver would kick in and register GPIO chips before the pinctrl driver. Things would compile fine, though. So this is a run time dependency, not compile time.
Quoted 2 lines
Please let me know so that I could take this with others into the samsung tree. And please kindly ignore my previous reply on this ;-)
I would be really happy if we could finally merge this for this release. This series is not really invasive in any way, so it is unlikely to introduce any regressions and it has waited so many releases, without any significant changes, due to a lot of other dependencies.
Best regards,
Tomasz
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
In reply to Kukjin KimQuoted 14 lines · Kukjin Kim
Quoted 13 lines · Tomasz Figa
Quoted 1 line · On Thursday 22 of August 2013 01:21:25 Linus Walleij wrote:
On Wed, Aug 21, 2013 at 11:21 PM, Tomasz Figa <[email protected]>
Quoted 9 lines · wrote:
Quoted 6 lines
Since this driver does not handle GPIO on device tree enabled platforms
any more, it should be bypassed whenever device tree is available, to not conflict with the new pinctrl-samsung driver.Signed-off-by Tomasz Figa <[email protected]>This seems like something I should apply to the GPIO tree right now, shall I?
Quoted 6 lines
Quoted 4 lines
Would be nice, but since this patch is a dependency for rest of this series and there are no other dependencies on GPIO tree, it might be easier to just let Kukjin take all the patches with required Acks.
Oh, I didn't see any dependencies...but if so, Linus do you agree with Tomasz' opinion?
Yes please merge it through the Samsung tree.
Yours,
Linus Walleij
Kukjin Kim
AppliedPATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
Quoted 19 lines · Linus Walleij
Quoted 18 lines · Kukjin Kim
Quoted 17 lines · Tomasz Figa
Quoted 1 line · On Thursday 22 of August 2013 01:21:25 Linus Walleij wrote:
On Wed, Aug 21, 2013 at 11:21 PM, Tomasz Figa<[email protected]>
Quoted 9 lines · wrote:
Quoted 6 lines
Since this driver does not handle GPIO on device tree enabled platforms
any more, it should be bypassed whenever device tree is available, to not conflict with the new pinctrl-samsung driver.Signed-off-by Tomasz Figa<[email protected]>This seems like something I should apply to the GPIO tree right now, shall I?
Would be nice, but since this patch is a dependency for rest of this series and there are no other dependencies on GPIO tree, it might be easier to just let Kukjin take all the patches with required Acks.
Quoted 6 lines
Quoted 2 lines
Oh, I didn't see any dependencies...but if so, Linus do you agree with Tomasz' opinion?
Yes please merge it through the Samsung tree.
Acked-by Linus Walleij<[email protected]>
Applied, thanks.
- Kukjin
PATCH v7 3/7 gpio: samsung: Skip initialization if device tree is present
In reply to Linus WalleijQuoted 4 lines · Linus Walleij
On Wed, Aug 21, 2013 at 11:21 PM, Tomasz Figa <[email protected]> wrote:
Quoted 9 lines
Quoted 5 lines
Since this driver does not handle GPIO on device tree enabled platforms any more, it should be bypassed whenever device tree is available, to not conflict with the new pinctrl-samsung driver.
Signed-off-by Tomasz Figa <[email protected]>This seems like something I should apply to the GPIO tree right now, shall I?
I think so. Feel free to add my ack on this.
Thanks,
Kukjin
PATCH v7 4/7 ARM: s3c64xx: Add board file for boot using Device Tree
In reply to Tomasz FigaThis patch adds board file that will be used to boot S3C64xx-based boards using Device Tree.
--- arch/arm/mach-s3c64xx/Kconfig | 16 +++++++ arch/arm/mach-s3c64xx/Makefile | 1 + arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 85 +++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
arch/arm/mach-s3c64xx/Kconfig +16 -0
@@ -306,3 +306,19 @@ config MACH_WLF_CRAGG_6410 select SAMSUNG_GPIO_EXTRA128 help Machine support for the Wolfson Cragganmore S3C6410 variant. + +config MACH_S3C64XX_DT + bool "Samsung S3C6400/S3C6410 machine using Device Tree" + select CLKSRC_OF + select CPU_S3C6400 + select CPU_S3C6410 + select PINCTRL + select PINCTRL_S3C64XX + select USE_OF + help + Machine support for Samsung S3C6400/S3C6410 machines with Device Tree + enabled. + Select this if a fdt blob is available for your S3C64XX SoC based + board. + Note: This is under development and not all peripherals can be + supported with this machine file.
arch/arm/mach-s3c64xx/Makefile +1 -0
@@ -57,3 +57,4 @@ obj-$(CONFIG_MACH_SMARTQ7) += mach-smartq7.o obj-$(CONFIG_MACH_SMDK6400) += mach-smdk6400.o obj-$(CONFIG_MACH_SMDK6410) += mach-smdk6410.o obj-$(CONFIG_MACH_WLF_CRAGG_6410) += mach-crag6410.o mach-crag6410-module.o +obj-$(CONFIG_MACH_S3C64XX_DT) += mach-s3c64xx-dt.o
arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c new file +85 -0
85 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH v7 5/7 ARM: dts: Add basic dts include files for Samsung S3C64xx SoCs
In reply to Tomasz FigaThis patch adds basic device tree definitions for Samsung S3C64xx SoCs.
Since all the SoCs in the series are very similar, the files are created hierarchically - one file for the whole series and then separate files for particular SoCs including the common one.
--- arch/arm/boot/dts/s3c6400.dtsi | 41 ++ arch/arm/boot/dts/s3c6410.dtsi | 57 +++ arch/arm/boot/dts/s3c64xx-pinctrl.dtsi | 687 +++++++++++++++++++++++++++++++++ arch/arm/boot/dts/s3c64xx.dtsi | 199 ++++++++++ 4 files changed, 984 insertions(+) create mode 100644 arch/arm/boot/dts/s3c6400.dtsi create mode 100644 arch/arm/boot/dts/s3c6410.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx-pinctrl.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx.dtsi
arch/arm/boot/dts/s3c6400.dtsi new file +41 -0
@@ -0,0 +1,41 @@ +/* + * Samsung's S3C6400 SoC device tree source + * + * Copyright (c) 2013 Tomasz Figa <[email protected]> + * + * Samsung's S3C6400 SoC device nodes are listed in this file. S3C6400 + * based board files can include this file and provide values for board specfic + * bindings. + * + * Note: This file does not include device nodes for all the controllers in + * S3C6400 SoC. As device tree coverage for S3C6400 increases, additional + * nodes can be added to this file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include "s3c64xx.dtsi" + +/ { + compatible = "samsung,s3c6400"; +}; + +&vic0 { + interrupt-mask = <0xfffffe1f>; + wakeup-mask = <0x00200004>; +}; + +&vic1 { + interrupt-mask = <0xffffffff>; + wakeup-mask = <0x53020000>; +}; + +&soc { + clocks: clock-controller at 7e00f000 { + compatible = "samsung,s3c6400-clock"; + reg = <0x7e00f000 0x1000>; + #clock-cells = <1>; + }; +};
arch/arm/boot/dts/s3c6410.dtsi new file +57 -0
57 lines not on this page · raw message
arch/arm/boot/dts/s3c64xx-pinctrl.dtsi new file +687 -0
687 lines not on this page · raw message
arch/arm/boot/dts/s3c64xx.dtsi new file +199 -0
199 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH v8 5/7 ARM: dts: Add basic dts include files for Samsung S3C64xx SoCs
This patch adds basic device tree definitions for Samsung S3C64xx SoCs.
Since all the SoCs in the series are very similar, the files are created hierarchically - one file for the whole series and then separate files for particular SoCs including the common one.
--- arch/arm/boot/dts/s3c6400.dtsi | 41 ++ arch/arm/boot/dts/s3c6410.dtsi | 57 +++ arch/arm/boot/dts/s3c64xx-pinctrl.dtsi | 687 +++++++++++++++++++++++++++++++++ arch/arm/boot/dts/s3c64xx.dtsi | 199 ++++++++++ 4 files changed, 984 insertions(+) create mode 100644 arch/arm/boot/dts/s3c6400.dtsi create mode 100644 arch/arm/boot/dts/s3c6410.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx-pinctrl.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx.dtsi
Changes since v7:
- Updated VIC nodes to reflect changes done to patch 1/7 (renamed interrupt-mask property to valid-mask).
arch/arm/boot/dts/s3c6400.dtsi new file +41 -0
@@ -0,0 +1,41 @@ +/* + * Samsung's S3C6400 SoC device tree source + * + * Copyright (c) 2013 Tomasz Figa <[email protected]> + * + * Samsung's S3C6400 SoC device nodes are listed in this file. S3C6400 + * based board files can include this file and provide values for board specfic + * bindings. + * + * Note: This file does not include device nodes for all the controllers in + * S3C6400 SoC. As device tree coverage for S3C6400 increases, additional + * nodes can be added to this file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include "s3c64xx.dtsi" + +/ { + compatible = "samsung,s3c6400"; +}; + +&vic0 { + valid-mask = <0xfffffe1f>; + wakeup-mask = <0x00200004>; +}; + +&vic1 { + valid-mask = <0xffffffff>; + wakeup-mask = <0x53020000>; +}; + +&soc { + clocks: clock-controller at 7e00f000 { + compatible = "samsung,s3c6400-clock"; + reg = <0x7e00f000 0x1000>; + #clock-cells = <1>; + }; +};
arch/arm/boot/dts/s3c6410.dtsi new file +57 -0
57 lines not on this page · raw message
arch/arm/boot/dts/s3c64xx-pinctrl.dtsi new file +687 -0
687 lines not on this page · raw message
arch/arm/boot/dts/s3c64xx.dtsi new file +199 -0
199 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH v9 5/7 ARM: dts: Add basic dts include files for Samsung S3C64xx SoCs
This patch adds basic device tree definitions for Samsung S3C64xx SoCs.
Since all the SoCs in the series are very similar, the files are created hierarchically - one file for the whole series and then separate files for particular SoCs including the common one.
--- arch/arm/boot/dts/s3c6400.dtsi | 41 ++ arch/arm/boot/dts/s3c6410.dtsi | 57 +++ arch/arm/boot/dts/s3c64xx-pinctrl.dtsi | 687 +++++++++++++++++++++++++++++++++ arch/arm/boot/dts/s3c64xx.dtsi | 199 ++++++++++ 4 files changed, 984 insertions(+) create mode 100644 arch/arm/boot/dts/s3c6400.dtsi create mode 100644 arch/arm/boot/dts/s3c6410.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx-pinctrl.dtsi create mode 100644 arch/arm/boot/dts/s3c64xx.dtsi
Changes since v8:
- Updated VIC nodes to reflect changes done to patch 1/7 (renamed wakeuo-mask property to valid-wakeup-mask).
arch/arm/boot/dts/s3c6400.dtsi new file +41 -0
@@ -0,0 +1,41 @@ +/* + * Samsung's S3C6400 SoC device tree source + * + * Copyright (c) 2013 Tomasz Figa <[email protected]> + * + * Samsung's S3C6400 SoC device nodes are listed in this file. S3C6400 + * based board files can include this file and provide values for board specfic + * bindings. + * + * Note: This file does not include device nodes for all the controllers in + * S3C6400 SoC. As device tree coverage for S3C6400 increases, additional + * nodes can be added to this file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +#include "s3c64xx.dtsi" + +/ { + compatible = "samsung,s3c6400"; +}; + +&vic0 { + valid-mask = <0xfffffe1f>; + valid-wakeup-mask = <0x00200004>; +}; + +&vic1 { + valid-mask = <0xffffffff>; + valid-wakeup-mask = <0x53020000>; +}; + +&soc { + clocks: clock-controller at 7e00f000 { + compatible = "samsung,s3c6400-clock"; + reg = <0x7e00f000 0x1000>; + #clock-cells = <1>; + }; +};
arch/arm/boot/dts/s3c6410.dtsi new file +57 -0
57 lines not on this page · raw message
arch/arm/boot/dts/s3c64xx-pinctrl.dtsi new file +687 -0
687 lines not on this page · raw message
arch/arm/boot/dts/s3c64xx.dtsi new file +199 -0
199 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH v7 6/7 ARM: dts: Add dts file for S3C6410-based Mini6410 board
In reply to Tomasz FigaThis patch adds basic device tree sources for FriendlyARM Mini6410 board based on Samsung S3C6410 SoC.
--- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/s3c6410-mini6410.dts | 228 +++++++++++++++++++++++++++++++++ 2 files changed, 229 insertions(+) create mode 100644 arch/arm/boot/dts/s3c6410-mini6410.dts
arch/arm/boot/dts/Makefile +1 -0
@@ -194,6 +194,7 @@ dtb-$(CONFIG_ARCH_U8500) += snowball.dtb \ ccu8540.dtb \ ccu9540.dtb dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb +dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \ emev2-kzm9d-reference.dtb \ r8a7740-armadillo800eva.dtb \
arch/arm/boot/dts/s3c6410-mini6410.dts new file +228 -0
228 lines not on this page · raw message
Signature · 1 line
1.8.3.2
PATCH v7 7/7 ARM: dts: Add dts file for S3C6410-based SMDK6410 board
In reply to Tomasz FigaThis patch adds basic device tree sources for SAMSUNG SMDK6410 board based on SAMSUNG S3C6410 SoC.
Currently only UARTs, SD channel 0 and 100Mbps ethernet (SMSC911x) are supported.
--- arch/arm/boot/dts/Makefile | 3 +- arch/arm/boot/dts/s3c6410-smdk6410.dts | 103 +++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/s3c6410-smdk6410.dts
arch/arm/boot/dts/Makefile +2 -1
@@ -194,7 +194,8 @@ dtb-$(CONFIG_ARCH_U8500) += snowball.dtb \ ccu8540.dtb \ ccu9540.dtb dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb -dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb +dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \ + s3c6410-smdk6410.dtb dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \ emev2-kzm9d-reference.dtb \ r8a7740-armadillo800eva.dtb \
arch/arm/boot/dts/s3c6410-smdk6410.dts new file +103 -0
103 lines not on this page · raw message
Signature · 1 line
1.8.3.2
v7 cover Initial Device Tree support for S3C64xx
In reply to Tomasz FigaQuoted 88 lines · Tomasz Figa
This series adds Device Tree support for Samsung S3C64xx SoC series.
It fixes several problems preventing from booting an S3C64xx-based system using Device Tree, adds all the infrastructure for Device Tree-based board support, including mach-s3c64xx-dt and dts include files for S3C64xx SoCs, and basic device tree source for FriendlyARM Mini6410 and SAMSUNG SMDK6410 boards.
Current support is somewhat limite, but should be fine as a start and will be extended in future, hopefully with help of S3C64xx board maintainers.
Depends on:
- [PATCH v2 0/8] Common Clock Framework support for Samsung S3C64xxhttp://thread.gmane.org/gmane.linux.usb.general/90493On Samsung S3C6410-based Mini6410 and SMDK6410 boards:
Tested-by Tomasz Figa<[email protected]>Changes since v6:
- Rebased onto current for-next branch of Kgene's tree,
- Dropped the idea of .init_platform() machine callback,
- Added support for i2c controllers,
- Replaced separate apb and ahb nodes with a single common soc node,
- Updated cpus node according to CPU bindings,
- Updated fixed rate clock nodes to use generic bindings,
- Added support for PWM buzzer and I2C EEPROM on Mini6410 board,
- Simplified the condition of skipping legacy GPIO initialization.Changes since v5:
- Rebased onto current for-next branch of Kgene's tree,
- Added support for new Common Clock Framework based clock driver,
- Introduced hierarchical structure of device nodes (representing physical AHB and APB buses),
- Bypassed most of legacy initialization when booting with DT,
- Used preprocessor macros in dts files to improve readabilty,
- Added support for SMDK6410 board.Changes since v4:
- Rebased onto current for-next branch of Kgene's tree
- Added support for pinctrl (driver merged through pinctrl tree)
- Added labels to all nodes that can be overridden from board dts
- Modified board dts to use the&label syntax to reference device nodesChanges since v3:
- Rebased onto current for-next branch of Kgene's tree
- Updated timer node for next version of samsung-time patches
- Replaced locals3c64xx_dt_init_irqwithirqchip_initChanges since v2:
- Updated timer node for next version of samsung-time patchesChanges since v1:
- Dropped two VIC-related patches that are no longer necessary
- Added Device Tree-based instantation of system timers
- Corrected VIC interrupt specifiers
- Adjusted CPU compatible values and dropped @idTomasz Figa (7):
ARM: common: vic: Parse interrupt and resume masks from device tree
ARM: s3c64xx: Bypass legacy initialization when booting with DT
gpio: samsung: Skip initialization if device tree is present
ARM: s3c64xx: Add board file for boot using Device Tree
ARM: dts: Add basic dts include files for Samsung S3C64xx SoCs
ARM: dts: Add dts file for S3C6410-based Mini6410 board
ARM: dts: Add dts file for S3C6410-based SMDK6410 boardDocumentation/devicetree/bindings/arm/vic.txt | 6 + arch/arm/boot/dts/Makefile | 2 + arch/arm/boot/dts/s3c6400.dtsi | 41 ++ arch/arm/boot/dts/s3c6410-mini6410.dts | 228 +++++++++ arch/arm/boot/dts/s3c6410-smdk6410.dts | 103 ++++ arch/arm/boot/dts/s3c6410.dtsi | 57 +++ arch/arm/boot/dts/s3c64xx-pinctrl.dtsi | 687 ++++++++++++++++++++++++++ arch/arm/boot/dts/s3c64xx.dtsi | 199 ++++++++ arch/arm/mach-s3c64xx/Kconfig | 16 + arch/arm/mach-s3c64xx/Makefile | 1 + arch/arm/mach-s3c64xx/common.c | 12 + arch/arm/mach-s3c64xx/dma.c | 9 + arch/arm/mach-s3c64xx/irq-pm.c | 9 + arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 85 ++++ arch/arm/mach-s3c64xx/s3c6400.c | 9 + arch/arm/mach-s3c64xx/s3c6410.c | 9 + arch/arm/plat-samsung/init.c | 12 +- drivers/gpio/gpio-samsung.c | 34 +- drivers/irqchip/irq-vic.c | 7 +- 19 files changed, 1497 insertions(+), 29 deletions(-)
Quoted 8 lines
create mode 100644
arch/arm/boot/dts/s3c6400.dtsicreate mode 100644arch/arm/boot/dts/s3c6410-mini6410.dtscreate mode 100644arch/arm/boot/dts/s3c6410-smdk6410.dtscreate mode 100644arch/arm/boot/dts/s3c6410.dtsicreate mode 100644arch/arm/boot/dts/s3c64xx-pinctrl.dtsicreate mode 100644arch/arm/boot/dts/s3c64xx.dtsicreate mode 100644arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
Nice, applied this whole series.
Thanks,
Kukjin