Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/mips/bcm63xx/dev-uart.c
26439 views
1
/*
2
* This file is subject to the terms and conditions of the GNU General Public
3
* License. See the file "COPYING" in the main directory of this archive
4
* for more details.
5
*
6
* Copyright (C) 2008 Maxime Bizon <[email protected]>
7
*/
8
9
#include <linux/init.h>
10
#include <linux/kernel.h>
11
#include <linux/platform_device.h>
12
#include <bcm63xx_cpu.h>
13
#include <bcm63xx_dev_uart.h>
14
15
static struct resource uart0_resources[] = {
16
{
17
/* start & end filled at runtime */
18
.flags = IORESOURCE_MEM,
19
},
20
{
21
/* start filled at runtime */
22
.flags = IORESOURCE_IRQ,
23
},
24
};
25
26
static struct resource uart1_resources[] = {
27
{
28
/* start & end filled at runtime */
29
.flags = IORESOURCE_MEM,
30
},
31
{
32
/* start filled at runtime */
33
.flags = IORESOURCE_IRQ,
34
},
35
};
36
37
static struct platform_device bcm63xx_uart_devices[] = {
38
{
39
.name = "bcm63xx_uart",
40
.id = 0,
41
.num_resources = ARRAY_SIZE(uart0_resources),
42
.resource = uart0_resources,
43
},
44
45
{
46
.name = "bcm63xx_uart",
47
.id = 1,
48
.num_resources = ARRAY_SIZE(uart1_resources),
49
.resource = uart1_resources,
50
}
51
};
52
53
int __init bcm63xx_uart_register(unsigned int id)
54
{
55
if (id >= ARRAY_SIZE(bcm63xx_uart_devices))
56
return -ENODEV;
57
58
if (id == 1 && (!BCMCPU_IS_3368() && !BCMCPU_IS_6358() &&
59
!BCMCPU_IS_6368()))
60
return -ENODEV;
61
62
if (id == 0) {
63
uart0_resources[0].start = bcm63xx_regset_address(RSET_UART0);
64
uart0_resources[0].end = uart0_resources[0].start +
65
RSET_UART_SIZE - 1;
66
uart0_resources[1].start = bcm63xx_get_irq_number(IRQ_UART0);
67
}
68
69
if (id == 1) {
70
uart1_resources[0].start = bcm63xx_regset_address(RSET_UART1);
71
uart1_resources[0].end = uart1_resources[0].start +
72
RSET_UART_SIZE - 1;
73
uart1_resources[1].start = bcm63xx_get_irq_number(IRQ_UART1);
74
}
75
76
return platform_device_register(&bcm63xx_uart_devices[id]);
77
}
78
79