MFD: mcp-sa11x0: move setup of PPC unit out of mcp-sa11x0.c
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>
This commit is contained in:
parent
7658e7f9a8
commit
e36e26a8b7
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue