ARM: kirkwood: Add HP T5325 thin client
authorAndrew Lunn <andrew@lunn.ch>
Tue, 25 Feb 2014 17:34:01 +0000 (18:34 +0100)
committerJason Cooper <jason@lakedaemon.net>
Tue, 25 Feb 2014 20:32:16 +0000 (20:32 +0000)
Convert the kirkwood t5325-setup.c to mostly device tree for
mach-mvebu. Part of the audio setup needs to remain in C for the
moment until suitable bindings are designed and implemented. So add
board code, triggered by the compatibility string.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/mach-mvebu/Kconfig
arch/arm/mach-mvebu/Makefile
arch/arm/mach-mvebu/board-t5325.c [new file with mode: 0644]
arch/arm/mach-mvebu/board.h [new file with mode: 0644]
arch/arm/mach-mvebu/kirkwood.c

index 2d7af55e9f75ba40871cbfb56c6a713db13e6600..5e533612e734b16acdf6f63c9b1f1b11e7d1877d 100644 (file)
@@ -63,6 +63,13 @@ config MACH_KIRKWOOD
          Say 'Y' here if you want your kernel to support boards based
          on the Marvell Kirkwood device tree.
 
+config MACH_T5325
+       bool "HP T5325 thin client"
+       depends on MACH_KIRKWOOD
+       help
+         Say 'Y' here if you want your kernel to support the
+         HP T5325 Thin client
+
 endmenu
 
 endif
index 6809ec769dd6555278740ead202758038a9f355d..a903f8ad8a4ae389a68619d868125b469b59e9ff 100644 (file)
@@ -8,3 +8,4 @@ obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o
 obj-$(CONFIG_SMP)                += platsmp.o headsmp.o
 obj-$(CONFIG_HOTPLUG_CPU)        += hotplug.o
 obj-$(CONFIG_MACH_KIRKWOOD)     += kirkwood.o kirkwood-pm.o
+obj-$(CONFIG_MACH_T5325)        += board-t5325.o
diff --git a/arch/arm/mach-mvebu/board-t5325.c b/arch/arm/mach-mvebu/board-t5325.c
new file mode 100644 (file)
index 0000000..65ace6d
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * HP T5325 Board Setup
+ *
+ * Copyright (C) 2014
+ *
+ * Andrew Lunn <andrew@lunn.ch>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <linux/kernel.h>
+#include <linux/i2c.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <sound/alc5623.h>
+#include "board.h"
+
+static struct platform_device hp_t5325_audio_device = {
+       .name           = "t5325-audio",
+       .id             = -1,
+};
+
+static struct alc5623_platform_data alc5621_data = {
+       .add_ctrl = 0x3700,
+       .jack_det_ctrl = 0x4810,
+};
+
+static struct i2c_board_info i2c_board_info[] __initdata = {
+       {
+               I2C_BOARD_INFO("alc5621", 0x1a),
+               .platform_data = &alc5621_data,
+       },
+};
+
+void __init t5325_init(void)
+{
+       i2c_register_board_info(0, i2c_board_info, ARRAY_SIZE(i2c_board_info));
+       platform_device_register(&hp_t5325_audio_device);
+}
diff --git a/arch/arm/mach-mvebu/board.h b/arch/arm/mach-mvebu/board.h
new file mode 100644 (file)
index 0000000..de7f0a1
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Board functions for Marvell System On Chip
+ *
+ * Copyright (C) 2014
+ *
+ * Andrew Lunn <andrew@lunn.ch>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#ifndef __ARCH_MVEBU_BOARD_H
+#define __ARCH_MVEBU_BOARD_H
+
+#ifdef CONFIG_MACH_T5325
+void t5325_init(void);
+#else
+static inline void t5325_init(void) {};
+#endif
+
+#endif
index 8a38b10532e5b839d8c763082d76d7d372e27a6f..120207fc36f1f87d210c98d747bb28ee914015a0 100644 (file)
@@ -25,6 +25,7 @@
 #include "kirkwood.h"
 #include "kirkwood-pm.h"
 #include "common.h"
+#include "board.h"
 
 static struct resource kirkwood_cpufreq_resources[] = {
        [0] = {
@@ -158,6 +159,11 @@ void kirkwood_disable_mbus_error_propagation(void)
        writel(readl(cpu_config) & ~CPU_CONFIG_ERROR_PROP, cpu_config);
 }
 
+static struct of_dev_auxdata auxdata[] __initdata = {
+       OF_DEV_AUXDATA("marvell,kirkwood-audio", 0xf10a0000,
+                      "mvebu-audio", NULL),
+       { /* sentinel */ }
+};
 
 static void __init kirkwood_dt_init(void)
 {
@@ -174,7 +180,10 @@ static void __init kirkwood_dt_init(void)
        kirkwood_pm_init();
        kirkwood_dt_eth_fixup();
 
-       of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+       if (of_machine_is_compatible("hp,t5325"))
+               t5325_init();
+
+       of_platform_populate(NULL, of_default_bus_match_table, auxdata, NULL);
 }
 
 static const char * const kirkwood_dt_board_compat[] = {