1 // SPDX-License-Identifier: GPL-2.0-only
2 /* Analogue & Micro Adder MPC875 board support
4 * Author: Scott Wood <scottwood@freescale.com>
6 * Copyright (c) 2007 Freescale Semiconductor, Inc.
9 #include <linux/init.h>
10 #include <linux/of_platform.h>
13 #include <asm/machdep.h>
15 #include <asm/8xx_immap.h>
25 static __initdata
struct cpm_pin adder875_pins
[] = {
27 {CPM_PORTB
, 24, CPM_PIN_INPUT
}, /* RX */
28 {CPM_PORTB
, 25, CPM_PIN_INPUT
| CPM_PIN_SECONDARY
}, /* TX */
31 {CPM_PORTA
, 0, CPM_PIN_INPUT
},
32 {CPM_PORTA
, 1, CPM_PIN_INPUT
},
33 {CPM_PORTA
, 2, CPM_PIN_INPUT
},
34 {CPM_PORTA
, 3, CPM_PIN_INPUT
},
35 {CPM_PORTA
, 4, CPM_PIN_OUTPUT
},
36 {CPM_PORTA
, 10, CPM_PIN_OUTPUT
},
37 {CPM_PORTA
, 11, CPM_PIN_OUTPUT
},
38 {CPM_PORTB
, 19, CPM_PIN_INPUT
},
39 {CPM_PORTB
, 31, CPM_PIN_INPUT
},
40 {CPM_PORTC
, 12, CPM_PIN_INPUT
},
41 {CPM_PORTC
, 13, CPM_PIN_INPUT
},
42 {CPM_PORTE
, 30, CPM_PIN_OUTPUT
},
43 {CPM_PORTE
, 31, CPM_PIN_OUTPUT
},
46 {CPM_PORTE
, 14, CPM_PIN_OUTPUT
| CPM_PIN_SECONDARY
},
47 {CPM_PORTE
, 15, CPM_PIN_OUTPUT
| CPM_PIN_SECONDARY
},
48 {CPM_PORTE
, 16, CPM_PIN_OUTPUT
},
49 {CPM_PORTE
, 17, CPM_PIN_OUTPUT
| CPM_PIN_SECONDARY
},
50 {CPM_PORTE
, 18, CPM_PIN_OUTPUT
| CPM_PIN_SECONDARY
},
51 {CPM_PORTE
, 19, CPM_PIN_OUTPUT
| CPM_PIN_SECONDARY
},
52 {CPM_PORTE
, 20, CPM_PIN_OUTPUT
| CPM_PIN_SECONDARY
},
53 {CPM_PORTE
, 21, CPM_PIN_OUTPUT
},
54 {CPM_PORTE
, 22, CPM_PIN_OUTPUT
},
55 {CPM_PORTE
, 23, CPM_PIN_OUTPUT
},
56 {CPM_PORTE
, 24, CPM_PIN_OUTPUT
},
57 {CPM_PORTE
, 25, CPM_PIN_OUTPUT
},
58 {CPM_PORTE
, 26, CPM_PIN_OUTPUT
},
59 {CPM_PORTE
, 27, CPM_PIN_OUTPUT
},
60 {CPM_PORTE
, 28, CPM_PIN_OUTPUT
},
61 {CPM_PORTE
, 29, CPM_PIN_OUTPUT
},
64 static void __init
init_ioports(void)
68 for (i
= 0; i
< ARRAY_SIZE(adder875_pins
); i
++) {
69 const struct cpm_pin
*pin
= &adder875_pins
[i
];
70 cpm1_set_pin(pin
->port
, pin
->pin
, pin
->flags
);
73 cpm1_clk_setup(CPM_CLK_SMC1
, CPM_BRG1
, CPM_CLK_RTX
);
75 /* Set FEC1 and FEC2 to MII mode */
76 clrbits32(&mpc8xx_immr
->im_cpm
.cp_cptr
, 0x00000180);
79 static void __init
adder875_setup(void)
85 static const struct of_device_id of_bus_ids
[] __initconst
= {
86 { .compatible
= "simple-bus", },
90 static int __init
declare_of_platform_devices(void)
92 of_platform_bus_probe(NULL
, of_bus_ids
, NULL
);
95 machine_device_initcall(adder875
, declare_of_platform_devices
);
97 define_machine(adder875
) {
98 .name
= "Adder MPC875",
99 .compatible
= "analogue-and-micro,adder875",
100 .setup_arch
= adder875_setup
,
101 .init_IRQ
= mpc8xx_pic_init
,
102 .get_irq
= mpc8xx_get_irq
,
103 .restart
= mpc8xx_restart
,
104 .progress
= udbg_progress
,