MFD: mcp-sa11x0: move setup of PPC unit out of mcp-sa11x0.c
authorRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 20 Jan 2012 22:24:07 +0000 (22:24 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 3 Feb 2012 17:38:02 +0000 (17:38 +0000)
Patch taken from af9081ae64 (ARM: sa1100: Refactor mcp-sa11x0 to use
platform resources.) by Jochen Friedrich <jochen@scram.de>, and
consolidated to use a common function.

Move the setup of the PPC unit out of mcp-sa11x0 into the core SA11x0
code, and call it from each platforms initialization file.  This
centralizes the setup of the PPC unit while not polluting the mcp-sa11x0
driver with these details.

Acked-by: Jochen Friedrich <jochen@scram.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/collie.c
arch/arm/mach-sa1100/generic.c
arch/arm/mach-sa1100/generic.h
arch/arm/mach-sa1100/lart.c
arch/arm/mach-sa1100/shannon.c
arch/arm/mach-sa1100/simpad.c
drivers/mfd/mcp-sa11x0.c

index 0c4b76ab4d8eba0037e305d5d8f9b17b36074fa7..3a19145683749aec33cec482b4262db4e5eef138 100644 (file)
@@ -231,6 +231,8 @@ static void __init assabet_init(void)
        PPDR |= PPC_TXD3 | PPC_TXD1;
        PPSR |= PPC_TXD3 | PPC_TXD1;
 
+       sa11x0_ppc_configure_mcp();
+
        sa1100fb_lcd_power = assabet_lcd_power;
        sa1100fb_backlight_power = assabet_backlight_power;
 
index 11bb6d0b9be377b6c926f3e759a03a21d2e9ffff..bc11879f80c856560e69f19c0b4240e860a77ab4 100644 (file)
@@ -128,6 +128,7 @@ static struct mcp_plat_data cerf_mcp_data = {
 
 static void __init cerf_init(void)
 {
+       sa11x0_ppc_configure_mcp();
        platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices));
        sa11x0_register_mtd(&cerf_flash_data, &cerf_flash_resource, 1);
        sa11x0_register_mcp(&cerf_mcp_data);
index b9060e236def9e90204fa2be99734ea3a4fc6417..efa2bc132cbfca7732188000dbc10ea86a4ee4e1 100644 (file)
@@ -341,6 +341,8 @@ static void __init collie_init(void)
 
        GPSR |= _COLLIE_GPIO_UCB1x00_RESET;
 
+       sa11x0_ppc_configure_mcp();
+
 
        platform_scoop_config = &collie_pcmcia_config;
 
index 480d2ea46b000a9f862c7bef28280a31730b47d9..1416094cc013ee54bcb4a6038df79e9a3a6871a1 100644 (file)
@@ -240,6 +240,16 @@ static struct platform_device sa11x0mcp_device = {
        .resource       = sa11x0mcp_resources,
 };
 
+void __init sa11x0_ppc_configure_mcp(void)
+{
+       /* Setup the PPC unit for the MCP */
+       PPDR &= ~PPC_RXD4;
+       PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
+       PSDR |= PPC_RXD4;
+       PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
+       PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
+}
+
 void sa11x0_register_mcp(struct mcp_plat_data *data)
 {
        sa11x0_register_device(&sa11x0mcp_device, data);
index 33268cf6be368e3feab4195d3e9222834ad53802..9236ff42bd1f3770e3159ed9a46646c87d91f331 100644 (file)
@@ -39,4 +39,5 @@ struct irda_platform_data;
 void sa11x0_register_irda(struct irda_platform_data *irda);
 
 struct mcp_plat_data;
+void sa11x0_ppc_configure_mcp(void);
 void sa11x0_register_mcp(struct mcp_plat_data *data);
index af4e2761f3dbf4a6254bfab53f98080334e5f387..eba64b7815009b19dbf4c8278a32a72a021ba98f 100644 (file)
@@ -28,6 +28,7 @@ static struct mcp_plat_data lart_mcp_data = {
 
 static void __init lart_init(void)
 {
+       sa11x0_ppc_configure_mcp();
        sa11x0_register_mcp(&lart_mcp_data);
 }
 
index 318b2b766a0b3ee7b8921c2904b65c0fdd551c8c..3efb4ac6224092d117a0c1e86d69d98402df1bb4 100644 (file)
@@ -59,6 +59,7 @@ static struct mcp_plat_data shannon_mcp_data = {
 
 static void __init shannon_init(void)
 {
+       sa11x0_ppc_configure_mcp();
        sa11x0_register_mtd(&shannon_flash_data, &shannon_flash_resource, 1);
        sa11x0_register_mcp(&shannon_mcp_data);
 }
index e17c04d6e32428af6aa7c8eb1fbc35ca6d7a02d8..3aa36ec210396bc4da2636b88401f23eb9e8c290 100644 (file)
@@ -376,6 +376,7 @@ static int __init simpad_init(void)
 
        pm_power_off = simpad_power_off;
 
+       sa11x0_ppc_configure_mcp();
        sa11x0_register_mtd(&simpad_flash_data, simpad_flash_resources,
                              ARRAY_SIZE(simpad_flash_resources));
        sa11x0_register_mcp(&simpad_mcp_data);
index d2ebc641b014439f784faa806a87b9799492cd1a..5373a7a835c63c6c5accbdb63afe4d6d566c155a 100644 (file)
@@ -165,15 +165,6 @@ static int mcp_sa11x0_probe(struct platform_device *pdev)
                ASSABET_BCR_set(ASSABET_BCR_CODEC_RST);
        }
 
-       /*
-        * Setup the PPC unit correctly.
-        */
-       PPDR &= ~PPC_RXD4;
-       PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
-       PSDR |= PPC_RXD4;
-       PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
-       PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
-
        /*
         * Initialise device.  Note that we initially
         * set the sampling rate to minimum.