17
17
#include "8250.h"
18
18
19
19
struct bcm2835aux_data {
20
- struct uart_8250_port uart ;
21
20
struct clk * clk ;
22
21
int line ;
23
22
};
24
23
25
24
static int bcm2835aux_serial_probe (struct platform_device * pdev )
26
25
{
26
+ struct uart_8250_port up = { };
27
27
struct bcm2835aux_data * data ;
28
28
struct resource * res ;
29
29
int ret ;
@@ -34,17 +34,14 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev)
34
34
return - ENOMEM ;
35
35
36
36
/* initialize data */
37
- spin_lock_init (& data -> uart .port .lock );
38
- data -> uart .capabilities = UART_CAP_FIFO | UART_CAP_MINI ;
39
- data -> uart .port .dev = & pdev -> dev ;
40
- data -> uart .port .regshift = 2 ;
41
- data -> uart .port .type = PORT_16550 ;
42
- data -> uart .port .iotype = UPIO_MEM ;
43
- data -> uart .port .fifosize = 8 ;
44
- data -> uart .port .flags = UPF_SHARE_IRQ |
45
- UPF_FIXED_PORT |
46
- UPF_FIXED_TYPE |
47
- UPF_SKIP_TEST ;
37
+ up .capabilities = UART_CAP_FIFO | UART_CAP_MINI ;
38
+ up .port .dev = & pdev -> dev ;
39
+ up .port .regshift = 2 ;
40
+ up .port .type = PORT_16550 ;
41
+ up .port .iotype = UPIO_MEM ;
42
+ up .port .fifosize = 8 ;
43
+ up .port .flags = UPF_SHARE_IRQ | UPF_FIXED_PORT | UPF_FIXED_TYPE |
44
+ UPF_SKIP_TEST ;
48
45
49
46
/* get the clock - this also enables the HW */
50
47
data -> clk = devm_clk_get (& pdev -> dev , NULL );
@@ -59,23 +56,23 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev)
59
56
ret = platform_get_irq (pdev , 0 );
60
57
if (ret < 0 )
61
58
return ret ;
62
- data -> uart .port .irq = ret ;
59
+ up .port .irq = ret ;
63
60
64
61
/* map the main registers */
65
62
res = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
66
63
if (!res ) {
67
64
dev_err (& pdev -> dev , "memory resource not found" );
68
65
return - EINVAL ;
69
66
}
70
- data -> uart .port .membase = devm_ioremap_resource (& pdev -> dev , res );
71
- ret = PTR_ERR_OR_ZERO (data -> uart .port .membase );
67
+ up .port .membase = devm_ioremap_resource (& pdev -> dev , res );
68
+ ret = PTR_ERR_OR_ZERO (up .port .membase );
72
69
if (ret )
73
70
return ret ;
74
71
75
72
/* Check for a fixed line number */
76
73
ret = of_alias_get_id (pdev -> dev .of_node , "serial" );
77
74
if (ret >= 0 )
78
- data -> uart .port .line = ret ;
75
+ up .port .line = ret ;
79
76
80
77
/* enable the clock as a last step */
81
78
ret = clk_prepare_enable (data -> clk );
@@ -90,10 +87,10 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev)
90
87
* so we have to multiply the actual clock by 2
91
88
* to get identical baudrates.
92
89
*/
93
- data -> uart .port .uartclk = clk_get_rate (data -> clk ) * 2 ;
90
+ up .port .uartclk = clk_get_rate (data -> clk ) * 2 ;
94
91
95
92
/* register the port */
96
- ret = serial8250_register_8250_port (& data -> uart );
93
+ ret = serial8250_register_8250_port (& up );
97
94
if (ret < 0 ) {
98
95
if (ret != - EPROBE_DEFER )
99
96
dev_err (& pdev -> dev ,
0 commit comments