소스 검색

Merge tag 'sunxi-core-for-3.20' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux into next/soc

Merge "Allwinner core changes for 3.20" from Maxime Ripard:

  - Support for the A31s
  - Adding support for cpufreq using cpufreq-dt

* tag 'sunxi-core-for-3.20' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux:
  ARM: sunxi: Register cpufreq-dt for sun[45678]i
  ARM: sunxi: Add "allwinner,sun6i-a31s" to mach-sunxi

Signed-off-by: Olof Johansson <olof@lixom.net>
Olof Johansson 11 년 전
부모
커밋
688a4994cc
4개의 변경된 파일13개의 추가작업 그리고 2개의 파일을 삭제
  1. 0 1
      Documentation/arm/sunxi/README
  2. 1 1
      arch/arm/mach-sunxi/platsmp.c
  3. 11 0
      arch/arm/mach-sunxi/sunxi.c
  4. 1 0
      drivers/clk/sunxi/clk-sunxi.c

+ 0 - 1
Documentation/arm/sunxi/README

@@ -50,7 +50,6 @@ SunXi family
           http://dl.linux-sunxi.org/A31/A3x_release_document/A31/IC/A31%20user%20manual%20V1.1%2020130630.pdf
           http://dl.linux-sunxi.org/A31/A3x_release_document/A31/IC/A31%20user%20manual%20V1.1%2020130630.pdf
 
 
       - Allwinner A31s (sun6i)
       - Allwinner A31s (sun6i)
-        + Not Supported
         + Datasheet
         + Datasheet
           http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20datasheet%20V1.3%2020131106.pdf
           http://dl.linux-sunxi.org/A31/A3x_release_document/A31s/IC/A31s%20datasheet%20V1.3%2020131106.pdf
         + User Manual
         + User Manual

+ 1 - 1
arch/arm/mach-sunxi/platsmp.c

@@ -120,4 +120,4 @@ static struct smp_operations sun6i_smp_ops __initdata = {
 	.smp_prepare_cpus	= sun6i_smp_prepare_cpus,
 	.smp_prepare_cpus	= sun6i_smp_prepare_cpus,
 	.smp_boot_secondary	= sun6i_smp_boot_secondary,
 	.smp_boot_secondary	= sun6i_smp_boot_secondary,
 };
 };
-CPU_METHOD_OF_DECLARE(sun6i_smp, "allwinner,sun6i-a31", &sun6i_smp_ops);
+CPU_METHOD_OF_DECLARE(sun6i_a31_smp, "allwinner,sun6i-a31", &sun6i_smp_ops);

+ 11 - 0
arch/arm/mach-sunxi/sunxi.c

@@ -13,9 +13,15 @@
 #include <linux/clk-provider.h>
 #include <linux/clk-provider.h>
 #include <linux/clocksource.h>
 #include <linux/clocksource.h>
 #include <linux/init.h>
 #include <linux/init.h>
+#include <linux/platform_device.h>
 
 
 #include <asm/mach/arch.h>
 #include <asm/mach/arch.h>
 
 
+static void __init sunxi_dt_cpufreq_init(void)
+{
+	platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
+}
+
 static const char * const sunxi_board_dt_compat[] = {
 static const char * const sunxi_board_dt_compat[] = {
 	"allwinner,sun4i-a10",
 	"allwinner,sun4i-a10",
 	"allwinner,sun5i-a10s",
 	"allwinner,sun5i-a10s",
@@ -25,10 +31,12 @@ static const char * const sunxi_board_dt_compat[] = {
 
 
 DT_MACHINE_START(SUNXI_DT, "Allwinner A1X (Device Tree)")
 DT_MACHINE_START(SUNXI_DT, "Allwinner A1X (Device Tree)")
 	.dt_compat	= sunxi_board_dt_compat,
 	.dt_compat	= sunxi_board_dt_compat,
+	.init_late	= sunxi_dt_cpufreq_init,
 MACHINE_END
 MACHINE_END
 
 
 static const char * const sun6i_board_dt_compat[] = {
 static const char * const sun6i_board_dt_compat[] = {
 	"allwinner,sun6i-a31",
 	"allwinner,sun6i-a31",
+	"allwinner,sun6i-a31s",
 	NULL,
 	NULL,
 };
 };
 
 
@@ -44,6 +52,7 @@ static void __init sun6i_timer_init(void)
 DT_MACHINE_START(SUN6I_DT, "Allwinner sun6i (A31) Family")
 DT_MACHINE_START(SUN6I_DT, "Allwinner sun6i (A31) Family")
 	.init_time	= sun6i_timer_init,
 	.init_time	= sun6i_timer_init,
 	.dt_compat	= sun6i_board_dt_compat,
 	.dt_compat	= sun6i_board_dt_compat,
+	.init_late	= sunxi_dt_cpufreq_init,
 MACHINE_END
 MACHINE_END
 
 
 static const char * const sun7i_board_dt_compat[] = {
 static const char * const sun7i_board_dt_compat[] = {
@@ -53,6 +62,7 @@ static const char * const sun7i_board_dt_compat[] = {
 
 
 DT_MACHINE_START(SUN7I_DT, "Allwinner sun7i (A20) Family")
 DT_MACHINE_START(SUN7I_DT, "Allwinner sun7i (A20) Family")
 	.dt_compat	= sun7i_board_dt_compat,
 	.dt_compat	= sun7i_board_dt_compat,
+	.init_late	= sunxi_dt_cpufreq_init,
 MACHINE_END
 MACHINE_END
 
 
 static const char * const sun8i_board_dt_compat[] = {
 static const char * const sun8i_board_dt_compat[] = {
@@ -62,6 +72,7 @@ static const char * const sun8i_board_dt_compat[] = {
 
 
 DT_MACHINE_START(SUN8I_DT, "Allwinner sun8i (A23) Family")
 DT_MACHINE_START(SUN8I_DT, "Allwinner sun8i (A23) Family")
 	.dt_compat	= sun8i_board_dt_compat,
 	.dt_compat	= sun8i_board_dt_compat,
+	.init_late	= sunxi_dt_cpufreq_init,
 MACHINE_END
 MACHINE_END
 
 
 static const char * const sun9i_board_dt_compat[] = {
 static const char * const sun9i_board_dt_compat[] = {

+ 1 - 0
drivers/clk/sunxi/clk-sunxi.c

@@ -1226,6 +1226,7 @@ static void __init sun6i_init_clocks(struct device_node *node)
 			  ARRAY_SIZE(sun6i_critical_clocks));
 			  ARRAY_SIZE(sun6i_critical_clocks));
 }
 }
 CLK_OF_DECLARE(sun6i_a31_clk_init, "allwinner,sun6i-a31", sun6i_init_clocks);
 CLK_OF_DECLARE(sun6i_a31_clk_init, "allwinner,sun6i-a31", sun6i_init_clocks);
+CLK_OF_DECLARE(sun6i_a31s_clk_init, "allwinner,sun6i-a31s", sun6i_init_clocks);
 CLK_OF_DECLARE(sun8i_a23_clk_init, "allwinner,sun8i-a23", sun6i_init_clocks);
 CLK_OF_DECLARE(sun8i_a23_clk_init, "allwinner,sun8i-a23", sun6i_init_clocks);
 
 
 static void __init sun9i_init_clocks(struct device_node *node)
 static void __init sun9i_init_clocks(struct device_node *node)