diff mbox

[PATCHv3,1/2] ARM: msm: Add support for APQ8074 Dragonboard

Message ID 1378495943-2572-1-git-send-email-rvaswani@codeaurora.org (mailing list archive)
State Changes Requested
Headers show

Commit Message

Rohit Vaswani Sept. 6, 2013, 7:32 p.m. UTC
This patch adds basic board support for APQ8074 Dragonboard
which belongs to the Snapdragon 800 family.
For now, just support a basic machine with device tree.

Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
---
 arch/arm/boot/dts/Makefile                |  3 ++-
 arch/arm/boot/dts/apq8074-dragonboard.dts |  6 ++++++
 arch/arm/boot/dts/msm8974.dtsi            | 35 +++++++++++++++++++++++++++++++
 arch/arm/mach-msm/Kconfig                 | 20 ++++++++++++++++--
 arch/arm/mach-msm/Makefile                |  1 +
 arch/arm/mach-msm/board-dt-8974.c         | 24 +++++++++++++++++++++
 6 files changed, 86 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm/boot/dts/apq8074-dragonboard.dts
 create mode 100644 arch/arm/boot/dts/msm8974.dtsi
 create mode 100644 arch/arm/mach-msm/board-dt-8974.c

Comments

Josh Cartwright Sept. 6, 2013, 7:53 p.m. UTC | #1
On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
> This patch adds basic board support for APQ8074 Dragonboard
> which belongs to the Snapdragon 800 family.
> For now, just support a basic machine with device tree.
> 
> Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
> ---
[..]
> index 0000000..5b7b6a0
> --- /dev/null
> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
> @@ -0,0 +1,6 @@
> +/include/ "msm8974.dtsi"
> +
> +/ {
> +	model = "Qualcomm APQ8074 Dragonboard";
> +	compatible = "qcom,apq8074-dragonboard", "qcom,apq8074";
> +};
> diff --git a/arch/arm/boot/dts/msm8974.dtsi b/arch/arm/boot/dts/msm8974.dtsi
> new file mode 100644
> index 0000000..f04b643
> --- /dev/null
> +++ b/arch/arm/boot/dts/msm8974.dtsi
> @@ -0,0 +1,35 @@
> +/dts-v1/;
> +
> +/include/ "skeleton.dtsi"
> +
> +/ {
> +	model = "Qualcomm MSM8974";
> +	compatible = "qcom,msm8974";
> +	interrupt-parent = <&intc>;
> +
> +	soc: soc { };
> +};
> +
> +&soc {

Breaking these up seems a little odd to me, but okay.

> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +	ranges;
> +	compatible = "simple-bus";
> +
> +	intc: interrupt-controller@f9000000 {
> +		compatible = "qcom,msm-qgic2";
> +		interrupt-controller;
> +		#interrupt-cells = <3>;
> +		reg = <0xf9000000 0x1000>,
> +		      <0xf9002000 0x1000>;
> +	};
> +
> +	timer {
> +		compatible = "arm,armv7-timer";
> +		interrupts = <1 2 0xf08>,
> +			     <1 3 0xf08>,
> +			     <1 4 0xf08>,
> +			     <1 1 0xf08>;
> +		clock-frequency = <19200000>;
> +	};
> +};
> diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
> index 905efc8..499e8fe 100644
> --- a/arch/arm/mach-msm/Kconfig
> +++ b/arch/arm/mach-msm/Kconfig
[..]
> +config ARCH_MSM8974
> +	bool "MSM8974"
> +	select ARM_GIC
> +	select CPU_V7
> +	select HAVE_ARM_ARCH_TIMER
> +	select HAVE_SMP
> +	select MSM_SCM if SMP
> +	select USE_OF
> +
> +config ARCH_MSM_DT
> +	def_bool y
> +	depends on (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM8974)
> +

Selecting _only_ ARCH_MSM8974 with these changes breaks the build with:

scripts/kconfig/conf --silentoldconfig Kconfig
#
# configuration written to .config
#
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
  CC      arch/arm/kernel/asm-offsets.s
  GEN     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
  CC      init/main.o
In file included from arch/arm/include/asm/irq.h:7:0,
                 from arch/arm/include/asm/hardirq.h:6,
                 from include/linux/hardirq.h:8,
                 from include/linux/ftrace_event.h:7,
                 from include/trace/syscall.h:6,
                 from include/linux/syscalls.h:79,
                 from init/main.c:18:
arch/arm/mach-msm/include/mach/irqs.h:35:2: error: #error "Unknown architecture specification"
 #error "Unknown architecture specification"
  ^
arch/arm/mach-msm/include/mach/irqs.h:38:18: error: 'NR_MSM_IRQS' undeclared here (not in a function)
 #define NR_IRQS (NR_MSM_IRQS + NR_GPIO_IRQS + NR_BOARD_IRQS)
                  ^
include/linux/irqdesc.h:76:33: note: in expansion of macro 'NR_IRQS'
 extern struct irq_desc irq_desc[NR_IRQS];
                                 ^
arch/arm/mach-msm/include/mach/irqs.h:38:32: error: 'NR_GPIO_IRQS' undeclared here (not in a function)
 #define NR_IRQS (NR_MSM_IRQS + NR_GPIO_IRQS + NR_BOARD_IRQS)
                                ^
include/linux/irqdesc.h:76:33: note: in expansion of macro 'NR_IRQS'
 extern struct irq_desc irq_desc[NR_IRQS];
                                 ^
arch/arm/mach-msm/include/mach/irqs.h:38:47: error: 'NR_BOARD_IRQS' undeclared here (not in a function)
 #define NR_IRQS (NR_MSM_IRQS + NR_GPIO_IRQS + NR_BOARD_IRQS)
                                               ^
include/linux/irqdesc.h:76:33: note: in expansion of macro 'NR_IRQS'
 extern struct irq_desc irq_desc[NR_IRQS];
                                 ^
make[1]: *** [init/main.o] Error 1
make: *** [init] Error 2

  Josh
Olof Johansson Sept. 6, 2013, 9:50 p.m. UTC | #2
Hi,

Some comments below.

On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
> This patch adds basic board support for APQ8074 Dragonboard
> which belongs to the Snapdragon 800 family.
> For now, just support a basic machine with device tree.
> 
> Signed-off-by: Rohit Vaswani <rvaswani@codeaurora.org>
> ---
>  arch/arm/boot/dts/Makefile                |  3 ++-
>  arch/arm/boot/dts/apq8074-dragonboard.dts |  6 ++++++
>  arch/arm/boot/dts/msm8974.dtsi            | 35 +++++++++++++++++++++++++++++++
>  arch/arm/mach-msm/Kconfig                 | 20 ++++++++++++++++--
>  arch/arm/mach-msm/Makefile                |  1 +
>  arch/arm/mach-msm/board-dt-8974.c         | 24 +++++++++++++++++++++
>  6 files changed, 86 insertions(+), 3 deletions(-)
>  create mode 100644 arch/arm/boot/dts/apq8074-dragonboard.dts
>  create mode 100644 arch/arm/boot/dts/msm8974.dtsi
>  create mode 100644 arch/arm/mach-msm/board-dt-8974.c
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 641b3c9a..bea54a7 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -97,7 +97,8 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
>  	kirkwood-openblocks_a6.dtb
>  dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb
>  dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
> -	msm8960-cdp.dtb
> +	msm8960-cdp.dtb \
> +	apq8074-dragonboard.dtb

Please add boards alphabetically.

>  dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>  	armada-370-mirabox.dtb \
>  	armada-370-rd.dtb \
> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
> new file mode 100644
> index 0000000..5b7b6a0
> --- /dev/null
> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts

arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
family or vendor is used as a prefix to keep things a bit more organized. In
that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?

> @@ -0,0 +1,6 @@
> +/include/ "msm8974.dtsi"
> +
> +/ {
> +	model = "Qualcomm APQ8074 Dragonboard";
> +	compatible = "qcom,apq8074-dragonboard", "qcom,apq8074";
> +};

Ok, I'm all for merging a early minimal dts file, but things like memory and
a default bootargs tend to make sense.

> diff --git a/arch/arm/boot/dts/msm8974.dtsi b/arch/arm/boot/dts/msm8974.dtsi
> new file mode 100644
> index 0000000..f04b643
> --- /dev/null
> +++ b/arch/arm/boot/dts/msm8974.dtsi
> @@ -0,0 +1,35 @@
> +/dts-v1/;
> +
> +/include/ "skeleton.dtsi"
> +
> +/ {
> +	model = "Qualcomm MSM8974";
> +	compatible = "qcom,msm8974";

the board uses "qcom,apq8074" and this overrides this. Which way is it?

> +	interrupt-parent = <&intc>;
> +
> +	soc: soc { };

For files that include this it's ok to use the &phandle syntax, but in this
base dtsi, please use proper structure. In other words, move the contents of
the soc node up above instead.

> +};
> +
> +&soc {
> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +	ranges;
> +	compatible = "simple-bus";
> +
> +	intc: interrupt-controller@f9000000 {
> +		compatible = "qcom,msm-qgic2";
> +		interrupt-controller;
> +		#interrupt-cells = <3>;
> +		reg = <0xf9000000 0x1000>,
> +		      <0xf9002000 0x1000>;
> +	};
> +
> +	timer {
> +		compatible = "arm,armv7-timer";
> +		interrupts = <1 2 0xf08>,
> +			     <1 3 0xf08>,
> +			     <1 4 0xf08>,
> +			     <1 1 0xf08>;
> +		clock-frequency = <19200000>;
> +	};
> +};

It'd make a lot of sense to include at least cpu nodes here as well, and
ideally basics for the drivers you have already merged, such as uarts.

> diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
> index 905efc8..499e8fe 100644
> --- a/arch/arm/mach-msm/Kconfig
> +++ b/arch/arm/mach-msm/Kconfig
> @@ -1,12 +1,12 @@
>  if ARCH_MSM
>  
>  comment "Qualcomm MSM SoC Type"
> -	depends on (ARCH_MSM8X60 || ARCH_MSM8960)
> +	depends on ARCH_MSM_DT
>  
>  choice
>  	prompt "Qualcomm MSM SoC Type"
>  	default ARCH_MSM7X00A
> -	depends on !(ARCH_MSM8X60 || ARCH_MSM8960)
> +	depends on !ARCH_MSM_DT

This has nothing to do with adding support for dragonboard. Please break
out the cleanup separately.

I'm not sure what the purpose of ARCH_MSM_DT is either, it just looks to
complicate matter here?

> +config ARCH_MSM8974
> +	bool "MSM8974"
> +	select ARM_GIC
> +	select CPU_V7
> +	select HAVE_ARM_ARCH_TIMER
> +	select HAVE_SMP
> +	select MSM_SCM if SMP
> +	select USE_OF
> +
> +config ARCH_MSM_DT
> +	def_bool y
> +	depends on (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM8974)
> +
>  config MSM_HAS_DEBUG_UART_HS
>  	bool
>  
> @@ -68,6 +81,7 @@ config MSM_SOC_REV_A
>  
>  config  ARCH_MSM_ARM11
>  	bool
> +
>  config  ARCH_MSM_SCORPION
>  	bool
>  
> @@ -75,6 +89,7 @@ config  MSM_VIC
>  	bool
>  
>  menu "Qualcomm MSM Board Type"
> +	depends on !ARCH_MSM_DT
>  
>  config MACH_HALIBUT
>  	depends on ARCH_MSM
> @@ -122,6 +137,7 @@ config MSM_SMD
>  
>  config MSM_GPIOMUX
>  	bool
> +	depends on !ARCH_MSM_DT
>  	help
>  	  Support for MSM V1 TLMM GPIOMUX architecture.


All of the above should be in a separate patch and motivated.

>  
> diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile
> index d257ff4..80e3b15 100644
> --- a/arch/arm/mach-msm/Makefile
> +++ b/arch/arm/mach-msm/Makefile
> @@ -29,5 +29,6 @@ obj-$(CONFIG_ARCH_MSM7X30) += board-msm7x30.o devices-msm7x30.o
>  obj-$(CONFIG_ARCH_QSD8X50) += board-qsd8x50.o devices-qsd8x50.o
>  obj-$(CONFIG_ARCH_MSM8X60) += board-dt-8660.o
>  obj-$(CONFIG_ARCH_MSM8960) += board-dt-8960.o
> +obj-$(CONFIG_ARCH_MSM8974) += board-dt-8974.o
>  obj-$(CONFIG_MSM_GPIOMUX) += gpiomux.o
>  obj-$(CONFIG_ARCH_QSD8X50) += gpiomux-8x50.o
> diff --git a/arch/arm/mach-msm/board-dt-8974.c b/arch/arm/mach-msm/board-dt-8974.c
> new file mode 100644
> index 0000000..01ed8d0
> --- /dev/null
> +++ b/arch/arm/mach-msm/board-dt-8974.c
> @@ -0,0 +1,24 @@
> +/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <linux/of_platform.h>
> +#include <asm/mach/arch.h>
> +
> +static const char * const msm8974_dt_match[] __initconst = {
> +	"qcom,msm8974",
> +	"qcom,apq8074",
> +	NULL
> +};
> +
> +DT_MACHINE_START(MSM8974_DT, "Qualcomm MSM (Flattened Device Tree)")
> +	.dt_compat = msm8974_dt_match,
> +MACHINE_END

This file should be shared across SoCs. You should avoid adding a new dt board
file for every SoC like this.


-Olof
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Rohit Vaswani Sept. 9, 2013, 5:48 p.m. UTC | #3
On 9/6/2013 2:50 PM, Olof Johansson wrote:
> Hi,
>
> Some comments below.
>
> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>> This patch adds basic board support for APQ8074 Dragonboard
>> <snip>
>>   dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>> -	msm8960-cdp.dtb
>> +	msm8960-cdp.dtb \
>> +	apq8074-dragonboard.dtb
> Please add boards alphabetically.
Will do.
>
>>   dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>   	armada-370-mirabox.dtb \
>>   	armada-370-rd.dtb \
>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>> new file mode 100644
>> index 0000000..5b7b6a0
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
> family or vendor is used as a prefix to keep things a bit more organized. In
> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?

Sure. But the board is called an APQ8074 and we wanted to keep the 
naming consistent with that.
>> @@ -0,0 +1,6 @@
>> +/include/ "msm8974.dtsi"
>> +
>> +/ {
>> +	model = "Qualcomm APQ8074 Dragonboard";
>> +	compatible = "qcom,apq8074-dragonboard", "qcom,apq8074";
>> +};
> Ok, I'm all for merging a early minimal dts file, but things like memory and
> a default bootargs tend to make sense.
>
>> diff --git a/arch/arm/boot/dts/msm8974.dtsi b/arch/arm/boot/dts/msm8974.dtsi
>> new file mode 100644
>> index 0000000..f04b643
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/msm8974.dtsi
>> @@ -0,0 +1,35 @@
>> +/dts-v1/;
>> +
>> +/include/ "skeleton.dtsi"
>> +
>> +/ {
>> +	model = "Qualcomm MSM8974";
>> +	compatible = "qcom,msm8974";
> the board uses "qcom,apq8074" and this overrides this. Which way is it?

So, MSM8974 is the base chip. The APQ8074 is a board based on it with 
the modem fused. So, apq8074 board compatible overrides the generic chip 
compatible.
>
>> +	interrupt-parent = <&intc>;
>> +
>> +	soc: soc { };
> For files that include this it's ok to use the &phandle syntax, but in this
> base dtsi, please use proper structure. In other words, move the contents of
> the soc node up above instead.

Will do.
>
>> +};
>> +
>> +&soc {
>> +	#address-cells = <1>;
>> +	#size-cells = <1>;
>> +	ranges;
>> +	compatible = "simple-bus";
>> +
>> +	intc: interrupt-controller@f9000000 {
>> +		compatible = "qcom,msm-qgic2";
>> +		interrupt-controller;
>> +		#interrupt-cells = <3>;
>> +		reg = <0xf9000000 0x1000>,
>> +		      <0xf9002000 0x1000>;
>> +	};
>> +
>> +	timer {
>> +		compatible = "arm,armv7-timer";
>> +		interrupts = <1 2 0xf08>,
>> +			     <1 3 0xf08>,
>> +			     <1 4 0xf08>,
>> +			     <1 1 0xf08>;
>> +		clock-frequency = <19200000>;
>> +	};
>> +};
> It'd make a lot of sense to include at least cpu nodes here as well, and
> ideally basics for the drivers you have already merged, such as uarts.

Those are scheduled next as separate patches with some additional changes.
>
>> diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
>> index 905efc8..499e8fe 100644
>> --- a/arch/arm/mach-msm/Kconfig
>> +++ b/arch/arm/mach-msm/Kconfig
>> @@ -1,12 +1,12 @@
>>   if ARCH_MSM
>>   
>>   comment "Qualcomm MSM SoC Type"
>> -	depends on (ARCH_MSM8X60 || ARCH_MSM8960)
>> +	depends on ARCH_MSM_DT
>>   
>>   choice
>>   	prompt "Qualcomm MSM SoC Type"
>>   	default ARCH_MSM7X00A
>> -	depends on !(ARCH_MSM8X60 || ARCH_MSM8960)
>> +	depends on !ARCH_MSM_DT
> This has nothing to do with adding support for dragonboard. Please break
> out the cleanup separately.
>
> I'm not sure what the purpose of ARCH_MSM_DT is either, it just looks to
> complicate matter here?

ARCH_MSM_DT is just a combined config to denote the targets that have DT 
support instead of ORing the chip configs.
>> +config ARCH_MSM8974
>> +	bool "MSM8974"
>> +	select ARM_GIC
>> +	select CPU_V7
>> +	select HAVE_ARM_ARCH_TIMER
>> +	select HAVE_SMP
>> +	select MSM_SCM if SMP
>> +	select USE_OF
>> +
>> +config ARCH_MSM_DT
>> +	def_bool y
>> +	depends on (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM8974)
>> +
>>   config MSM_HAS_DEBUG_UART_HS
>>   	bool
>>   
>> @@ -68,6 +81,7 @@ config MSM_SOC_REV_A
>>   
>>   config  ARCH_MSM_ARM11
>>   	bool
>> +
>>   config  ARCH_MSM_SCORPION
>>   	bool
>>   
>> @@ -75,6 +89,7 @@ config  MSM_VIC
>>   	bool
>>   
>>   menu "Qualcomm MSM Board Type"
>> +	depends on !ARCH_MSM_DT
>>   
>>   config MACH_HALIBUT
>>   	depends on ARCH_MSM
>> @@ -122,6 +137,7 @@ config MSM_SMD
>>   
>>   config MSM_GPIOMUX
>>   	bool
>> +	depends on !ARCH_MSM_DT
>>   	help
>>   	  Support for MSM V1 TLMM GPIOMUX architecture.
>
> All of the above should be in a separate patch and motivated.
>
>>   
>> diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile
>> index d257ff4..80e3b15 100644
>> --- a/arch/arm/mach-msm/Makefile
>> +++ b/arch/arm/mach-msm/Makefile
>> @@ -29,5 +29,6 @@ obj-$(CONFIG_ARCH_MSM7X30) += board-msm7x30.o devices-msm7x30.o
>>   obj-$(CONFIG_ARCH_QSD8X50) += board-qsd8x50.o devices-qsd8x50.o
>>   obj-$(CONFIG_ARCH_MSM8X60) += board-dt-8660.o
>>   obj-$(CONFIG_ARCH_MSM8960) += board-dt-8960.o
>> +obj-$(CONFIG_ARCH_MSM8974) += board-dt-8974.o
>>   obj-$(CONFIG_MSM_GPIOMUX) += gpiomux.o
>>   obj-$(CONFIG_ARCH_QSD8X50) += gpiomux-8x50.o
>> diff --git a/arch/arm/mach-msm/board-dt-8974.c b/arch/arm/mach-msm/board-dt-8974.c
>> new file mode 100644
>> index 0000000..01ed8d0
>> --- /dev/null
>> +++ b/arch/arm/mach-msm/board-dt-8974.c
>> @@ -0,0 +1,24 @@
>> +/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 and
>> + * only version 2 as published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + */
>> +
>> +#include <linux/of_platform.h>
>> +#include <asm/mach/arch.h>
>> +
>> +static const char * const msm8974_dt_match[] __initconst = {
>> +	"qcom,msm8974",
>> +	"qcom,apq8074",
>> +	NULL
>> +};
>> +
>> +DT_MACHINE_START(MSM8974_DT, "Qualcomm MSM (Flattened Device Tree)")
>> +	.dt_compat = msm8974_dt_match,
>> +MACHINE_END
> This file should be shared across SoCs. You should avoid adding a new dt board
> file for every SoC like this.

Will club these changes with the ARCH_MSM_DT seperation and send that 
out as a precursor patch to 8074 support.
>
> -Olof


Thanks,
Rohit Vaswani
Kumar Gala Sept. 9, 2013, 7:17 p.m. UTC | #4
On Sep 9, 2013, at 12:48 PM, Rohit Vaswani wrote:

> On 9/6/2013 2:50 PM, Olof Johansson wrote:
>> Hi,
>> 
>> Some comments below.
>> 
>> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>> This patch adds basic board support for APQ8074 Dragonboard
>>> <snip>
>>>  dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>> -	msm8960-cdp.dtb
>>> +	msm8960-cdp.dtb \
>>> +	apq8074-dragonboard.dtb
>> Please add boards alphabetically.
> Will do.
>> 
>>>  dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>  	armada-370-mirabox.dtb \
>>>  	armada-370-rd.dtb \
>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>> new file mode 100644
>>> index 0000000..5b7b6a0
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>> family or vendor is used as a prefix to keep things a bit more organized. In
>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
> 
> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.

If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.

- k
Stephen Warren Sept. 9, 2013, 7:29 p.m. UTC | #5
On 09/09/2013 01:17 PM, Kumar Gala wrote:
> 
> On Sep 9, 2013, at 12:48 PM, Rohit Vaswani wrote:
> 
>> On 9/6/2013 2:50 PM, Olof Johansson wrote:
>>> Hi,
>>>
>>> Some comments below.
>>>
>>> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>>> This patch adds basic board support for APQ8074 Dragonboard
>>>> <snip>
>>>>  dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>>> -	msm8960-cdp.dtb
>>>> +	msm8960-cdp.dtb \
>>>> +	apq8074-dragonboard.dtb
>>> Please add boards alphabetically.
>> Will do.
>>>
>>>>  dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>>  	armada-370-mirabox.dtb \
>>>>  	armada-370-rd.dtb \
>>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>> new file mode 100644
>>>> index 0000000..5b7b6a0
>>>> --- /dev/null
>>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>>> family or vendor is used as a prefix to keep things a bit more organized. In
>>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
>>
>> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.
> 
> If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.

Hmm. It'd be nice for the filenames to be ${soc}-${board} so that e.g.
U-Boot can easily calculate the DTB filename based on its soc/board
environment variables... Luckily in my case for Tegra, all the Tegra
chip names start with "Tegra", so we already sort all our DTB filenames
together in the directory listing:-)

--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kumar Gala Sept. 9, 2013, 7:48 p.m. UTC | #6
On Sep 9, 2013, at 2:29 PM, Stephen Warren wrote:

> On 09/09/2013 01:17 PM, Kumar Gala wrote:
>> 
>> On Sep 9, 2013, at 12:48 PM, Rohit Vaswani wrote:
>> 
>>> On 9/6/2013 2:50 PM, Olof Johansson wrote:
>>>> Hi,
>>>> 
>>>> Some comments below.
>>>> 
>>>> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>>>> This patch adds basic board support for APQ8074 Dragonboard
>>>>> <snip>
>>>>> dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>>>> -	msm8960-cdp.dtb
>>>>> +	msm8960-cdp.dtb \
>>>>> +	apq8074-dragonboard.dtb
>>>> Please add boards alphabetically.
>>> Will do.
>>>> 
>>>>> dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>>> 	armada-370-mirabox.dtb \
>>>>> 	armada-370-rd.dtb \
>>>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>> new file mode 100644
>>>>> index 0000000..5b7b6a0
>>>>> --- /dev/null
>>>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>>>> family or vendor is used as a prefix to keep things a bit more organized. In
>>>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
>>> 
>>> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.
>> 
>> If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.
> 
> Hmm. It'd be nice for the filenames to be ${soc}-${board} so that e.g.
> U-Boot can easily calculate the DTB filename based on its soc/board
> environment variables... Luckily in my case for Tegra, all the Tegra
> chip names start with "Tegra", so we already sort all our DTB filenames
> together in the directory listing:-)

u-boot's not supported on MSM platforms, so not sure what purpose this serves.

we might want to just introduce vendor dirs so its arch/arm/boot/dts/{vendor}/{soc}-{board}

Not sure if we want to argue about {vendor} vs {sub-arch}.

- k
Stephen Warren Sept. 9, 2013, 9:21 p.m. UTC | #7
On 09/09/2013 01:48 PM, Kumar Gala wrote:
> 
> On Sep 9, 2013, at 2:29 PM, Stephen Warren wrote:
> 
>> On 09/09/2013 01:17 PM, Kumar Gala wrote:
>>>
>>> On Sep 9, 2013, at 12:48 PM, Rohit Vaswani wrote:
>>>
>>>> On 9/6/2013 2:50 PM, Olof Johansson wrote:
>>>>> Hi,
>>>>>
>>>>> Some comments below.
>>>>>
>>>>> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>>>>> This patch adds basic board support for APQ8074 Dragonboard
>>>>>> <snip>
>>>>>> dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>>>>> -	msm8960-cdp.dtb
>>>>>> +	msm8960-cdp.dtb \
>>>>>> +	apq8074-dragonboard.dtb
>>>>> Please add boards alphabetically.
>>>> Will do.
>>>>>
>>>>>> dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>>>> 	armada-370-mirabox.dtb \
>>>>>> 	armada-370-rd.dtb \
>>>>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>> new file mode 100644
>>>>>> index 0000000..5b7b6a0
>>>>>> --- /dev/null
>>>>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>>>>> family or vendor is used as a prefix to keep things a bit more organized. In
>>>>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
>>>>
>>>> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.
>>>
>>> If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.
>>
>> Hmm. It'd be nice for the filenames to be ${soc}-${board} so that e.g.
>> U-Boot can easily calculate the DTB filename based on its soc/board
>> environment variables... Luckily in my case for Tegra, all the Tegra
>> chip names start with "Tegra", so we already sort all our DTB filenames
>> together in the directory listing:-)
> 
> u-boot's not supported on MSM platforms, so not sure what purpose this serves.

Presumably that's just because nobody has ported the code; it could be
supported couldn't it?

> we might want to just introduce vendor dirs so its arch/arm/boot/dts/{vendor}/{soc}-{board}

That seems reasonable to me, although people will complain about the
files moving again. Perhaps it's worth doing that as part of the move of
*.dts out of the kernel?

> Not sure if we want to argue about {vendor} vs {sub-arch}.

sub-arch being the mach-xxx/plat-xxx directory? If so, I think that's a
Linux-ism that shouldn't affect the DT directory layout.
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kumar Gala Sept. 9, 2013, 9:25 p.m. UTC | #8
On Sep 9, 2013, at 4:21 PM, Stephen Warren wrote:

> On 09/09/2013 01:48 PM, Kumar Gala wrote:
>> 
>> On Sep 9, 2013, at 2:29 PM, Stephen Warren wrote:
>> 
>>> On 09/09/2013 01:17 PM, Kumar Gala wrote:
>>>> 
>>>> On Sep 9, 2013, at 12:48 PM, Rohit Vaswani wrote:
>>>> 
>>>>> On 9/6/2013 2:50 PM, Olof Johansson wrote:
>>>>>> Hi,
>>>>>> 
>>>>>> Some comments below.
>>>>>> 
>>>>>> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>>>>>> This patch adds basic board support for APQ8074 Dragonboard
>>>>>>> <snip>
>>>>>>> dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>>>>>> -	msm8960-cdp.dtb
>>>>>>> +	msm8960-cdp.dtb \
>>>>>>> +	apq8074-dragonboard.dtb
>>>>>> Please add boards alphabetically.
>>>>> Will do.
>>>>>> 
>>>>>>> dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>>>>> 	armada-370-mirabox.dtb \
>>>>>>> 	armada-370-rd.dtb \
>>>>>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>>> new file mode 100644
>>>>>>> index 0000000..5b7b6a0
>>>>>>> --- /dev/null
>>>>>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>>>>>> family or vendor is used as a prefix to keep things a bit more organized. In
>>>>>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
>>>>> 
>>>>> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.
>>>> 
>>>> If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.
>>> 
>>> Hmm. It'd be nice for the filenames to be ${soc}-${board} so that e.g.
>>> U-Boot can easily calculate the DTB filename based on its soc/board
>>> environment variables... Luckily in my case for Tegra, all the Tegra
>>> chip names start with "Tegra", so we already sort all our DTB filenames
>>> together in the directory listing:-)
>> 
>> u-boot's not supported on MSM platforms, so not sure what purpose this serves.
> 
> Presumably that's just because nobody has ported the code; it could be
> supported couldn't it?

In theory.

>> we might want to just introduce vendor dirs so its arch/arm/boot/dts/{vendor}/{soc}-{board}
> 
> That seems reasonable to me, although people will complain about the
> files moving again. Perhaps it's worth doing that as part of the move of
> *.dts out of the kernel?

Agreed, probably best since we'll probably be merging different arch dts's as well at that point

>> Not sure if we want to argue about {vendor} vs {sub-arch}.
> 
> sub-arch being the mach-xxx/plat-xxx directory? If so, I think that's a
> Linux-ism that shouldn't affect the DT directory layout.

Yeah, the mach-xxx/plat-xxx dir, and agree that it being a Linux-ism we shouldn't apply to this.

- k
Rohit Vaswani Sept. 9, 2013, 9:42 p.m. UTC | #9
On 9/9/2013 2:25 PM, Kumar Gala wrote:
> <snip>
> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>>>>>>> This patch adds basic board support for APQ8074 Dragonboard
>>>>>>>> <snip>
>>>>>>>> dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>>>>>>> -	msm8960-cdp.dtb
>>>>>>>> +	msm8960-cdp.dtb \
>>>>>>>> +	apq8074-dragonboard.dtb
>>>>>>> Please add boards alphabetically.
>>>>>> Will do.
>>>>>>>> dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>>>>>> 	armada-370-mirabox.dtb \
>>>>>>>> 	armada-370-rd.dtb \
>>>>>>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>>>> new file mode 100644
>>>>>>>> index 0000000..5b7b6a0
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>>>>>>> family or vendor is used as a prefix to keep things a bit more organized. In
>>>>>>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
>>>>>> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.
>>>>> If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.

Coming back to this, it would be better if the naming to be consistent 
with what we call our ARCH - msm and not qcom.
msm8974-dragonboard signifies quite clearly what the board is.

>>>> <snip> 


Thanks,
Rohit Vaswani
Kumar Gala Sept. 9, 2013, 10:04 p.m. UTC | #10
On Sep 9, 2013, at 4:42 PM, Rohit Vaswani wrote:

> On 9/9/2013 2:25 PM, Kumar Gala wrote:
>> <snip>
>> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>>>>>>>> This patch adds basic board support for APQ8074 Dragonboard
>>>>>>>>> <snip>
>>>>>>>>> dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>>>>>>>> -	msm8960-cdp.dtb
>>>>>>>>> +	msm8960-cdp.dtb \
>>>>>>>>> +	apq8074-dragonboard.dtb
>>>>>>>> Please add boards alphabetically.
>>>>>>> Will do.
>>>>>>>>> dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>>>>>>> 	armada-370-mirabox.dtb \
>>>>>>>>> 	armada-370-rd.dtb \
>>>>>>>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>>>>> new file mode 100644
>>>>>>>>> index 0000000..5b7b6a0
>>>>>>>>> --- /dev/null
>>>>>>>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>>>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>>>>>>>> family or vendor is used as a prefix to keep things a bit more organized. In
>>>>>>>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
>>>>>>> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.
>>>>>> If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.
> 
> Coming back to this, it would be better if the naming to be consistent with what we call our ARCH - msm and not qcom.
> msm8974-dragonboard signifies quite clearly what the board is.

I was saying qcom,apq8074-dragonboard or we can do the dir thing as we don't have that mean qcom/msm device trees.

- k
Rohit Vaswani Sept. 9, 2013, 10:30 p.m. UTC | #11
On 9/9/2013 3:04 PM, Kumar Gala wrote:
> On Sep 9, 2013, at 4:42 PM, Rohit Vaswani wrote:
>
>> On 9/9/2013 2:25 PM, Kumar Gala wrote:
>>> <snip>
>>> On Fri, Sep 06, 2013 at 12:32:22PM -0700, Rohit Vaswani wrote:
>>>>>>>>>> This patch adds basic board support for APQ8074 Dragonboard
>>>>>>>>>> <snip>
>>>>>>>>>> dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
>>>>>>>>>> -	msm8960-cdp.dtb
>>>>>>>>>> +	msm8960-cdp.dtb \
>>>>>>>>>> +	apq8074-dragonboard.dtb
>>>>>>>>> Please add boards alphabetically.
>>>>>>>> Will do.
>>>>>>>>>> dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
>>>>>>>>>> 	armada-370-mirabox.dtb \
>>>>>>>>>> 	armada-370-rd.dtb \
>>>>>>>>>> diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>>>>>> new file mode 100644
>>>>>>>>>> index 0000000..5b7b6a0
>>>>>>>>>> --- /dev/null
>>>>>>>>>> +++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
>>>>>>>>> arch/arm/boot/dts/ is getting really crowded. It's been working best if the SoC
>>>>>>>>> family or vendor is used as a prefix to keep things a bit more organized. In
>>>>>>>>> that spirit, prefixing these with msm-<foo> makes sense. Can you please do so?
>>>>>>>> Sure. But the board is called an APQ8074 and we wanted to keep the naming consistent with that.
>>>>>>> If we do this we should use qcom, not msm as the prefix.  Match the device tree vendor prefix.
>> Coming back to this, it would be better if the naming to be consistent with what we call our ARCH - msm and not qcom.
>> msm8974-dragonboard signifies quite clearly what the board is.
> I was saying qcom,apq8074-dragonboard or we can do the dir thing as we don't have that mean qcom/msm device trees.
>
> - k

Sure, that's fine. If there's a consensus on the name to match the 
compatible strings, could you send a patch out to rename the older 
dtsi's and I can add the Dragonboard support with it.

Thanks,
Rohit Vaswani
diff mbox

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 641b3c9a..bea54a7 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -97,7 +97,8 @@  dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
 	kirkwood-openblocks_a6.dtb
 dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb
 dtb-$(CONFIG_ARCH_MSM) += msm8660-surf.dtb \
-	msm8960-cdp.dtb
+	msm8960-cdp.dtb \
+	apq8074-dragonboard.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
 	armada-370-mirabox.dtb \
 	armada-370-rd.dtb \
diff --git a/arch/arm/boot/dts/apq8074-dragonboard.dts b/arch/arm/boot/dts/apq8074-dragonboard.dts
new file mode 100644
index 0000000..5b7b6a0
--- /dev/null
+++ b/arch/arm/boot/dts/apq8074-dragonboard.dts
@@ -0,0 +1,6 @@ 
+/include/ "msm8974.dtsi"
+
+/ {
+	model = "Qualcomm APQ8074 Dragonboard";
+	compatible = "qcom,apq8074-dragonboard", "qcom,apq8074";
+};
diff --git a/arch/arm/boot/dts/msm8974.dtsi b/arch/arm/boot/dts/msm8974.dtsi
new file mode 100644
index 0000000..f04b643
--- /dev/null
+++ b/arch/arm/boot/dts/msm8974.dtsi
@@ -0,0 +1,35 @@ 
+/dts-v1/;
+
+/include/ "skeleton.dtsi"
+
+/ {
+	model = "Qualcomm MSM8974";
+	compatible = "qcom,msm8974";
+	interrupt-parent = <&intc>;
+
+	soc: soc { };
+};
+
+&soc {
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges;
+	compatible = "simple-bus";
+
+	intc: interrupt-controller@f9000000 {
+		compatible = "qcom,msm-qgic2";
+		interrupt-controller;
+		#interrupt-cells = <3>;
+		reg = <0xf9000000 0x1000>,
+		      <0xf9002000 0x1000>;
+	};
+
+	timer {
+		compatible = "arm,armv7-timer";
+		interrupts = <1 2 0xf08>,
+			     <1 3 0xf08>,
+			     <1 4 0xf08>,
+			     <1 1 0xf08>;
+		clock-frequency = <19200000>;
+	};
+};
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig
index 905efc8..499e8fe 100644
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -1,12 +1,12 @@ 
 if ARCH_MSM
 
 comment "Qualcomm MSM SoC Type"
-	depends on (ARCH_MSM8X60 || ARCH_MSM8960)
+	depends on ARCH_MSM_DT
 
 choice
 	prompt "Qualcomm MSM SoC Type"
 	default ARCH_MSM7X00A
-	depends on !(ARCH_MSM8X60 || ARCH_MSM8960)
+	depends on !ARCH_MSM_DT
 
 config ARCH_MSM7X00A
 	bool "MSM7x00A / MSM7x01A"
@@ -60,6 +60,19 @@  config ARCH_MSM8960
 	select MSM_SCM if SMP
 	select USE_OF
 
+config ARCH_MSM8974
+	bool "MSM8974"
+	select ARM_GIC
+	select CPU_V7
+	select HAVE_ARM_ARCH_TIMER
+	select HAVE_SMP
+	select MSM_SCM if SMP
+	select USE_OF
+
+config ARCH_MSM_DT
+	def_bool y
+	depends on (ARCH_MSM8X60 || ARCH_MSM8960 || ARCH_MSM8974)
+
 config MSM_HAS_DEBUG_UART_HS
 	bool
 
@@ -68,6 +81,7 @@  config MSM_SOC_REV_A
 
 config  ARCH_MSM_ARM11
 	bool
+
 config  ARCH_MSM_SCORPION
 	bool
 
@@ -75,6 +89,7 @@  config  MSM_VIC
 	bool
 
 menu "Qualcomm MSM Board Type"
+	depends on !ARCH_MSM_DT
 
 config MACH_HALIBUT
 	depends on ARCH_MSM
@@ -122,6 +137,7 @@  config MSM_SMD
 
 config MSM_GPIOMUX
 	bool
+	depends on !ARCH_MSM_DT
 	help
 	  Support for MSM V1 TLMM GPIOMUX architecture.
 
diff --git a/arch/arm/mach-msm/Makefile b/arch/arm/mach-msm/Makefile
index d257ff4..80e3b15 100644
--- a/arch/arm/mach-msm/Makefile
+++ b/arch/arm/mach-msm/Makefile
@@ -29,5 +29,6 @@  obj-$(CONFIG_ARCH_MSM7X30) += board-msm7x30.o devices-msm7x30.o
 obj-$(CONFIG_ARCH_QSD8X50) += board-qsd8x50.o devices-qsd8x50.o
 obj-$(CONFIG_ARCH_MSM8X60) += board-dt-8660.o
 obj-$(CONFIG_ARCH_MSM8960) += board-dt-8960.o
+obj-$(CONFIG_ARCH_MSM8974) += board-dt-8974.o
 obj-$(CONFIG_MSM_GPIOMUX) += gpiomux.o
 obj-$(CONFIG_ARCH_QSD8X50) += gpiomux-8x50.o
diff --git a/arch/arm/mach-msm/board-dt-8974.c b/arch/arm/mach-msm/board-dt-8974.c
new file mode 100644
index 0000000..01ed8d0
--- /dev/null
+++ b/arch/arm/mach-msm/board-dt-8974.c
@@ -0,0 +1,24 @@ 
+/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/of_platform.h>
+#include <asm/mach/arch.h>
+
+static const char * const msm8974_dt_match[] __initconst = {
+	"qcom,msm8974",
+	"qcom,apq8074",
+	NULL
+};
+
+DT_MACHINE_START(MSM8974_DT, "Qualcomm MSM (Flattened Device Tree)")
+	.dt_compat = msm8974_dt_match,
+MACHINE_END