diff options
Diffstat (limited to 'arch/arm/mach-qcom')
| -rw-r--r-- | arch/arm/mach-qcom/Kconfig | 93 | ||||
| -rw-r--r-- | arch/arm/mach-qcom/Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/mach-qcom/board-660.c | 67 | ||||
| -rw-r--r-- | arch/arm/mach-qcom/board-dt.c | 28 | ||||
| -rw-r--r-- | arch/arm/mach-qcom/board-dt.h | 15 |
5 files changed, 197 insertions, 8 deletions
diff --git a/arch/arm/mach-qcom/Kconfig b/arch/arm/mach-qcom/Kconfig index 2256cd1e25d1..4ffb9b34e315 100644 --- a/arch/arm/mach-qcom/Kconfig +++ b/arch/arm/mach-qcom/Kconfig @@ -1,25 +1,102 @@ -menuconfig ARCH_QCOM - bool "Qualcomm Support" if ARCH_MULTI_V7 - select ARCH_SUPPORTS_BIG_ENDIAN - select ARM_GIC +if ARCH_QCOM +menu "QCOM SoC Type" + +config ARCH_SDM660 + bool "Enable Support for SDM660" + select CLKDEV_LOOKUP + select HAVE_CLK + select HAVE_CLK_PREPARE + select PM_OPP + select SOC_BUS + select MSM_IRQ + select THERMAL_WRITABLE_TRIPS + select ARM_GIC_V3 select ARM_AMBA - select PINCTRL - select QCOM_SCM if SMP + select SPARSE_IRQ + select MULTI_IRQ_HANDLER + select HAVE_ARM_ARCH_TIMER + select MAY_HAVE_SPARSE_IRQ + select COMMON_CLK + select COMMON_CLK_QCOM + select QCOM_GDSC + select PINCTRL_MSM_TLMM + select USE_PINCTRL_IRQ + select MSM_PM if PM + select QMI_ENCDEC + select CPU_FREQ + select CPU_FREQ_MSM + select PM_DEVFREQ + select MSM_DEVFREQ_DEVBW + select DEVFREQ_SIMPLE_DEV + select DEVFREQ_GOV_MSM_BW_HWMON + select MSM_BIMC_BWMON + select MSM_QDSP6V2_CODECS + select MSM_AUDIO_QDSP6V2 if SND_SOC + select MSM_RPM_SMD + select GENERIC_IRQ_MIGRATION + select MSM_JTAGV8 if CORESIGHT_ETMV4 help - Support for Qualcomm's devicetree based systems. + This enables support for the SDM660 chipset. If you do not + wish to build a kernel that runs on this chipset, say 'N' here. -if ARCH_QCOM +config ARCH_SDM630 + bool "Enable Support for SDM630" + select CLKDEV_LOOKUP + select HAVE_CLK + select HAVE_CLK_PREPARE + select PM_OPP + select SOC_BUS + select MSM_IRQ + select THERMAL_WRITABLE_TRIPS + select ARM_GIC_V3 + select ARM_AMBA + select SPARSE_IRQ + select MULTI_IRQ_HANDLER + select HAVE_ARM_ARCH_TIMER + select MAY_HAVE_SPARSE_IRQ + select MSM_PM if PM + select QMI_ENCDEC + select CPU_FREQ + select CPU_FREQ_MSM + select PM_DEVFREQ + select MSM_DEVFREQ_DEVBW + select DEVFREQ_SIMPLE_DEV + select DEVFREQ_GOV_MSM_BW_HWMON + select MSM_BIMC_BWMON + select MSM_QDSP6V2_CODECS + select MSM_AUDIO_QDSP6V2 if SND_SOC + select MSM_RPM_SMD + select MSM_JTAGV8 if CORESIGHT_ETMV4 + help + This enables support for the SDM630 chipset. If you do not + wish to build a kernel that runs on this chipset, say 'N' here. config ARCH_MSM8X60 bool "Enable support for MSM8X60" + select ARCH_SUPPORTS_BIG_ENDIAN + select ARM_AMBA + select QCOM_SCM if SMP select CLKSRC_QCOM + select CLKSRC_OF + select COMMON_CLK config ARCH_MSM8960 bool "Enable support for MSM8960" select CLKSRC_QCOM + select ARCH_SUPPORTS_BIG_ENDIAN + select ARM_AMBA + select QCOM_SCM if SMP + select CLKSRC_OF + select COMMON_CLK config ARCH_MSM8974 bool "Enable support for MSM8974" select HAVE_ARM_ARCH_TIMER + select ARCH_SUPPORTS_BIG_ENDIAN + select ARM_AMBA + select QCOM_SCM if SMP + select CLKSRC_OF + select COMMON_CLK +endmenu endif diff --git a/arch/arm/mach-qcom/Makefile b/arch/arm/mach-qcom/Makefile index e324375fa919..c79ab416701c 100644 --- a/arch/arm/mach-qcom/Makefile +++ b/arch/arm/mach-qcom/Makefile @@ -1,2 +1,4 @@ obj-y := board.o +obj-$(CONFIG_USE_OF) += board-dt.o +obj-$(CONFIG_ARCH_SDM660) += board-660.o obj-$(CONFIG_SMP) += platsmp.o diff --git a/arch/arm/mach-qcom/board-660.c b/arch/arm/mach-qcom/board-660.c new file mode 100644 index 000000000000..5cd11f09e3a4 --- /dev/null +++ b/arch/arm/mach-qcom/board-660.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2016, 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/kernel.h> +#include <asm/mach/arch.h> +#include "board-dt.h" + +static const char *sdm660_dt_match[] __initconst = { + "qcom,sdm660", + "qcom,sda660", + NULL +}; + +static void __init sdm660_init(void) +{ + board_dt_populate(NULL); +} + +DT_MACHINE_START(SDM660_DT, + "Qualcomm Technologies, Inc. SDM 660 (Flattened Device Tree)") + .init_machine = sdm660_init, + .dt_compat = sdm660_dt_match, +MACHINE_END + +static const char *sdm630_dt_match[] __initconst = { + "qcom,sdm630", + "qcom,sda630", + NULL +}; + +static void __init sdm630_init(void) +{ + board_dt_populate(NULL); +} + +DT_MACHINE_START(SDM630_DT, + "Qualcomm Technologies, Inc. SDM 630 (Flattened Device Tree)") + .init_machine = sdm630_init, + .dt_compat = sdm630_dt_match, +MACHINE_END + +static const char *sdm658_dt_match[] __initconst = { + "qcom,sdm658", + "qcom,sda658", + NULL +}; + +static void __init sdm658_init(void) +{ + board_dt_populate(NULL); +} + +DT_MACHINE_START(SDM658_DT, + "Qualcomm Technologies, Inc. SDM 658 (Flattened Device Tree)") + .init_machine = sdm658_init, + .dt_compat = sdm658_dt_match, +MACHINE_END diff --git a/arch/arm/mach-qcom/board-dt.c b/arch/arm/mach-qcom/board-dt.c new file mode 100644 index 000000000000..b6746adba1c7 --- /dev/null +++ b/arch/arm/mach-qcom/board-dt.c @@ -0,0 +1,28 @@ +/* Copyright (c) 2016, 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/kernel.h> +#include <linux/of.h> +#include <linux/of_fdt.h> + +#include "board-dt.h" + +void __init board_dt_populate(struct of_dev_auxdata *adata) +{ + of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); + + /* Explicitly parent the /soc devices to the root node to preserve + * the kernel ABI (sysfs structure, etc) until userspace is updated + */ + of_platform_populate(of_find_node_by_path("/soc"), + of_default_bus_match_table, adata, NULL); +} diff --git a/arch/arm/mach-qcom/board-dt.h b/arch/arm/mach-qcom/board-dt.h new file mode 100644 index 000000000000..c3d02742f5c1 --- /dev/null +++ b/arch/arm/mach-qcom/board-dt.h @@ -0,0 +1,15 @@ +/* Copyright (c) 2016, 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> + +void __init board_dt_populate(struct of_dev_auxdata *adata); |
