mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-12 12:22:42 +00:00
524ef29cff
The BCm63xx SOC has two uarts. Some boards use the second one for bluetooth. This patch changes platform device registration code to handle this. Changes to the UART driver were already merged in 6a2c7eabfd09ca7986bf96b8958a87ca041a19d8. Signed-off-by: Maxime Bizon <mbizon@freebox.fr> To: linux-mips@linux-mips.org Cc: Maxime Bizon <mbizon@freebox.fr> Patchwork: http://patchwork.linux-mips.org/patch/900/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
76 lines
1.7 KiB
C
76 lines
1.7 KiB
C
/*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr>
|
|
*/
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/kernel.h>
|
|
#include <linux/platform_device.h>
|
|
#include <bcm63xx_cpu.h>
|
|
|
|
static struct resource uart0_resources[] = {
|
|
{
|
|
/* start & end filled at runtime */
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
/* start filled at runtime */
|
|
.flags = IORESOURCE_IRQ,
|
|
},
|
|
};
|
|
|
|
static struct resource uart1_resources[] = {
|
|
{
|
|
/* start & end filled at runtime */
|
|
.flags = IORESOURCE_MEM,
|
|
},
|
|
{
|
|
/* start filled at runtime */
|
|
.flags = IORESOURCE_IRQ,
|
|
},
|
|
};
|
|
|
|
static struct platform_device bcm63xx_uart_devices[] = {
|
|
{
|
|
.name = "bcm63xx_uart",
|
|
.id = 0,
|
|
.num_resources = ARRAY_SIZE(uart0_resources),
|
|
.resource = uart0_resources,
|
|
},
|
|
|
|
{
|
|
.name = "bcm63xx_uart",
|
|
.id = 1,
|
|
.num_resources = ARRAY_SIZE(uart1_resources),
|
|
.resource = uart1_resources,
|
|
}
|
|
};
|
|
|
|
int __init bcm63xx_uart_register(unsigned int id)
|
|
{
|
|
if (id >= ARRAY_SIZE(bcm63xx_uart_devices))
|
|
return -ENODEV;
|
|
|
|
if (id == 1 && !BCMCPU_IS_6358())
|
|
return -ENODEV;
|
|
|
|
if (id == 0) {
|
|
uart0_resources[0].start = bcm63xx_regset_address(RSET_UART0);
|
|
uart0_resources[0].end = uart0_resources[0].start +
|
|
RSET_UART_SIZE - 1;
|
|
uart0_resources[1].start = bcm63xx_get_irq_number(IRQ_UART0);
|
|
}
|
|
|
|
if (id == 1) {
|
|
uart1_resources[0].start = bcm63xx_regset_address(RSET_UART1);
|
|
uart1_resources[0].end = uart1_resources[0].start +
|
|
RSET_UART_SIZE - 1;
|
|
uart1_resources[1].start = bcm63xx_get_irq_number(IRQ_UART1);
|
|
}
|
|
|
|
return platform_device_register(&bcm63xx_uart_devices[id]);
|
|
}
|