diff options
Diffstat (limited to 'arch/arm/mach-kirkwood')
-rw-r--r-- | arch/arm/mach-kirkwood/common.c | 38 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/common.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/include/mach/kirkwood.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-kirkwood/openrd-setup.c | 13 |
4 files changed, 56 insertions, 0 deletions
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index 9dd67c7b4459..1c82d4290dad 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <asm/mach/time.h> | 25 | #include <asm/mach/time.h> |
26 | #include <mach/kirkwood.h> | 26 | #include <mach/kirkwood.h> |
27 | #include <mach/bridge-regs.h> | 27 | #include <mach/bridge-regs.h> |
28 | #include <plat/audio.h> | ||
28 | #include <plat/cache-feroceon-l2.h> | 29 | #include <plat/cache-feroceon-l2.h> |
29 | #include <plat/ehci-orion.h> | 30 | #include <plat/ehci-orion.h> |
30 | #include <plat/mvsdio.h> | 31 | #include <plat/mvsdio.h> |
@@ -871,6 +872,42 @@ struct sys_timer kirkwood_timer = { | |||
871 | .init = kirkwood_timer_init, | 872 | .init = kirkwood_timer_init, |
872 | }; | 873 | }; |
873 | 874 | ||
875 | /***************************************************************************** | ||
876 | * Audio | ||
877 | ****************************************************************************/ | ||
878 | static struct resource kirkwood_i2s_resources[] = { | ||
879 | [0] = { | ||
880 | .start = AUDIO_PHYS_BASE, | ||
881 | .end = AUDIO_PHYS_BASE + SZ_16K - 1, | ||
882 | .flags = IORESOURCE_MEM, | ||
883 | }, | ||
884 | [1] = { | ||
885 | .start = IRQ_KIRKWOOD_I2S, | ||
886 | .end = IRQ_KIRKWOOD_I2S, | ||
887 | .flags = IORESOURCE_IRQ, | ||
888 | }, | ||
889 | }; | ||
890 | |||
891 | static struct kirkwood_asoc_platform_data kirkwood_i2s_data = { | ||
892 | .dram = &kirkwood_mbus_dram_info, | ||
893 | .burst = 128, | ||
894 | }; | ||
895 | |||
896 | static struct platform_device kirkwood_i2s_device = { | ||
897 | .name = "kirkwood-i2s", | ||
898 | .id = -1, | ||
899 | .num_resources = ARRAY_SIZE(kirkwood_i2s_resources), | ||
900 | .resource = kirkwood_i2s_resources, | ||
901 | .dev = { | ||
902 | .platform_data = &kirkwood_i2s_data, | ||
903 | }, | ||
904 | }; | ||
905 | |||
906 | void __init kirkwood_audio_init(void) | ||
907 | { | ||
908 | kirkwood_clk_ctrl |= CGC_AUDIO; | ||
909 | platform_device_register(&kirkwood_i2s_device); | ||
910 | } | ||
874 | 911 | ||
875 | /***************************************************************************** | 912 | /***************************************************************************** |
876 | * General | 913 | * General |
@@ -939,6 +976,7 @@ void __init kirkwood_init(void) | |||
939 | kirkwood_spi_plat_data.tclk = kirkwood_tclk; | 976 | kirkwood_spi_plat_data.tclk = kirkwood_tclk; |
940 | kirkwood_uart0_data[0].uartclk = kirkwood_tclk; | 977 | kirkwood_uart0_data[0].uartclk = kirkwood_tclk; |
941 | kirkwood_uart1_data[0].uartclk = kirkwood_tclk; | 978 | kirkwood_uart1_data[0].uartclk = kirkwood_tclk; |
979 | kirkwood_i2s_data.tclk = kirkwood_tclk; | ||
942 | 980 | ||
943 | /* | 981 | /* |
944 | * Disable propagation of mbus errors to the CPU local bus, | 982 | * Disable propagation of mbus errors to the CPU local bus, |
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h index 5b2c1c18d641..95bb0a73adfb 100644 --- a/arch/arm/mach-kirkwood/common.h +++ b/arch/arm/mach-kirkwood/common.h | |||
@@ -17,6 +17,7 @@ struct mv_sata_platform_data; | |||
17 | struct mvsdio_platform_data; | 17 | struct mvsdio_platform_data; |
18 | struct mtd_partition; | 18 | struct mtd_partition; |
19 | struct mtd_info; | 19 | struct mtd_info; |
20 | struct kirkwood_asoc_platform_data; | ||
20 | 21 | ||
21 | #define KW_PCIE0 (1 << 0) | 22 | #define KW_PCIE0 (1 << 0) |
22 | #define KW_PCIE1 (1 << 1) | 23 | #define KW_PCIE1 (1 << 1) |
@@ -46,6 +47,7 @@ void kirkwood_uart0_init(void); | |||
46 | void kirkwood_uart1_init(void); | 47 | void kirkwood_uart1_init(void); |
47 | void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay); | 48 | void kirkwood_nand_init(struct mtd_partition *parts, int nr_parts, int delay); |
48 | void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, int (*dev_ready)(struct mtd_info *)); | 49 | void kirkwood_nand_init_rnb(struct mtd_partition *parts, int nr_parts, int (*dev_ready)(struct mtd_info *)); |
50 | void kirkwood_audio_init(void); | ||
49 | 51 | ||
50 | extern int kirkwood_tclk; | 52 | extern int kirkwood_tclk; |
51 | extern struct sys_timer kirkwood_timer; | 53 | extern struct sys_timer kirkwood_timer; |
diff --git a/arch/arm/mach-kirkwood/include/mach/kirkwood.h b/arch/arm/mach-kirkwood/include/mach/kirkwood.h index d141af4c2744..93fc2ec95e76 100644 --- a/arch/arm/mach-kirkwood/include/mach/kirkwood.h +++ b/arch/arm/mach-kirkwood/include/mach/kirkwood.h | |||
@@ -111,6 +111,9 @@ | |||
111 | 111 | ||
112 | #define SDIO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x90000) | 112 | #define SDIO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0x90000) |
113 | 113 | ||
114 | #define AUDIO_PHYS_BASE (KIRKWOOD_REGS_PHYS_BASE | 0xA0000) | ||
115 | #define AUDIO_VIRT_BASE (KIRKWOOD_REGS_VIRT_BASE | 0xA0000) | ||
116 | |||
114 | /* | 117 | /* |
115 | * Supported devices and revisions. | 118 | * Supported devices and revisions. |
116 | */ | 119 | */ |
diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c index fd64cd2b4e0a..fd06be618815 100644 --- a/arch/arm/mach-kirkwood/openrd-setup.c +++ b/arch/arm/mach-kirkwood/openrd-setup.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/mtd/partitions.h> | 15 | #include <linux/mtd/partitions.h> |
16 | #include <linux/ata_platform.h> | 16 | #include <linux/ata_platform.h> |
17 | #include <linux/mv643xx_eth.h> | 17 | #include <linux/mv643xx_eth.h> |
18 | #include <linux/i2c.h> | ||
18 | #include <asm/mach-types.h> | 19 | #include <asm/mach-types.h> |
19 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
20 | #include <mach/kirkwood.h> | 21 | #include <mach/kirkwood.h> |
@@ -60,6 +61,12 @@ static unsigned int openrd_mpp_config[] __initdata = { | |||
60 | 0 | 61 | 0 |
61 | }; | 62 | }; |
62 | 63 | ||
64 | static struct i2c_board_info i2c_board_info[] __initdata = { | ||
65 | { | ||
66 | I2C_BOARD_INFO("cs42l51", 0x4a), | ||
67 | }, | ||
68 | }; | ||
69 | |||
63 | static void __init openrd_init(void) | 70 | static void __init openrd_init(void) |
64 | { | 71 | { |
65 | /* | 72 | /* |
@@ -86,6 +93,12 @@ static void __init openrd_init(void) | |||
86 | kirkwood_sdio_init(&openrd_mvsdio_data); | 93 | kirkwood_sdio_init(&openrd_mvsdio_data); |
87 | 94 | ||
88 | kirkwood_i2c_init(); | 95 | kirkwood_i2c_init(); |
96 | |||
97 | if (machine_is_openrd_client()) { | ||
98 | i2c_register_board_info(0, i2c_board_info, | ||
99 | ARRAY_SIZE(i2c_board_info)); | ||
100 | kirkwood_audio_init(); | ||
101 | } | ||
89 | } | 102 | } |
90 | 103 | ||
91 | static int __init openrd_pci_init(void) | 104 | static int __init openrd_pci_init(void) |