17f627f03SMagnus Damm /* 27f627f03SMagnus Damm * Emma Mobile EV2 processor support 37f627f03SMagnus Damm * 47f627f03SMagnus Damm * Copyright (C) 2012 Magnus Damm 57f627f03SMagnus Damm * 67f627f03SMagnus Damm * This program is free software; you can redistribute it and/or modify 77f627f03SMagnus Damm * it under the terms of the GNU General Public License as published by 87f627f03SMagnus Damm * the Free Software Foundation; version 2 of the License. 97f627f03SMagnus Damm * 107f627f03SMagnus Damm * This program is distributed in the hope that it will be useful, 117f627f03SMagnus Damm * but WITHOUT ANY WARRANTY; without even the implied warranty of 127f627f03SMagnus Damm * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 137f627f03SMagnus Damm * GNU General Public License for more details. 147f627f03SMagnus Damm * 157f627f03SMagnus Damm * You should have received a copy of the GNU General Public License 167f627f03SMagnus Damm * along with this program; if not, write to the Free Software 177f627f03SMagnus Damm * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 187f627f03SMagnus Damm */ 197f627f03SMagnus Damm #include <linux/kernel.h> 207f627f03SMagnus Damm #include <linux/init.h> 217f627f03SMagnus Damm #include <linux/interrupt.h> 227f627f03SMagnus Damm #include <linux/irq.h> 237f627f03SMagnus Damm #include <linux/platform_device.h> 24088efd92SMagnus Damm #include <linux/platform_data/gpio-em.h> 253d5de271SMagnus Damm #include <linux/of_platform.h> 267f627f03SMagnus Damm #include <linux/delay.h> 277f627f03SMagnus Damm #include <linux/input.h> 287f627f03SMagnus Damm #include <linux/io.h> 29520f7bd7SRob Herring #include <linux/irqchip/arm-gic.h> 307f627f03SMagnus Damm #include <mach/hardware.h> 317f627f03SMagnus Damm #include <mach/common.h> 327f627f03SMagnus Damm #include <mach/emev2.h> 337f627f03SMagnus Damm #include <mach/irqs.h> 347f627f03SMagnus Damm #include <asm/mach-types.h> 357f627f03SMagnus Damm #include <asm/mach/arch.h> 367f627f03SMagnus Damm #include <asm/mach/map.h> 377f627f03SMagnus Damm #include <asm/mach/time.h> 387f627f03SMagnus Damm 39bd5a875dSMagnus Damm static struct map_desc emev2_io_desc[] __initdata = { 40bd5a875dSMagnus Damm #ifdef CONFIG_SMP 41bd5a875dSMagnus Damm /* 128K entity map for 0xe0100000 (SMU) */ 42bd5a875dSMagnus Damm { 43bd5a875dSMagnus Damm .virtual = 0xe0100000, 44bd5a875dSMagnus Damm .pfn = __phys_to_pfn(0xe0100000), 45bd5a875dSMagnus Damm .length = SZ_128K, 46bd5a875dSMagnus Damm .type = MT_DEVICE 47bd5a875dSMagnus Damm }, 48bd5a875dSMagnus Damm /* 2M mapping for SCU + L2 controller */ 49bd5a875dSMagnus Damm { 50bd5a875dSMagnus Damm .virtual = 0xf0000000, 51bd5a875dSMagnus Damm .pfn = __phys_to_pfn(0x1e000000), 52bd5a875dSMagnus Damm .length = SZ_2M, 53bd5a875dSMagnus Damm .type = MT_DEVICE 54bd5a875dSMagnus Damm }, 55bd5a875dSMagnus Damm #endif 56bd5a875dSMagnus Damm }; 57bd5a875dSMagnus Damm 58bd5a875dSMagnus Damm void __init emev2_map_io(void) 59bd5a875dSMagnus Damm { 60bd5a875dSMagnus Damm iotable_init(emev2_io_desc, ARRAY_SIZE(emev2_io_desc)); 61bd5a875dSMagnus Damm } 62bd5a875dSMagnus Damm 637f627f03SMagnus Damm /* UART */ 647f627f03SMagnus Damm static struct resource uart0_resources[] = { 657f627f03SMagnus Damm [0] = { 667f627f03SMagnus Damm .start = 0xe1020000, 677f627f03SMagnus Damm .end = 0xe1020037, 687f627f03SMagnus Damm .flags = IORESOURCE_MEM, 697f627f03SMagnus Damm }, 707f627f03SMagnus Damm [1] = { 717f627f03SMagnus Damm .start = 40, 727f627f03SMagnus Damm .flags = IORESOURCE_IRQ, 737f627f03SMagnus Damm } 747f627f03SMagnus Damm }; 757f627f03SMagnus Damm 767f627f03SMagnus Damm static struct platform_device uart0_device = { 777f627f03SMagnus Damm .name = "serial8250-em", 787f627f03SMagnus Damm .id = 0, 797f627f03SMagnus Damm .num_resources = ARRAY_SIZE(uart0_resources), 807f627f03SMagnus Damm .resource = uart0_resources, 817f627f03SMagnus Damm }; 827f627f03SMagnus Damm 837f627f03SMagnus Damm static struct resource uart1_resources[] = { 847f627f03SMagnus Damm [0] = { 857f627f03SMagnus Damm .start = 0xe1030000, 867f627f03SMagnus Damm .end = 0xe1030037, 877f627f03SMagnus Damm .flags = IORESOURCE_MEM, 887f627f03SMagnus Damm }, 897f627f03SMagnus Damm [1] = { 907f627f03SMagnus Damm .start = 41, 917f627f03SMagnus Damm .flags = IORESOURCE_IRQ, 927f627f03SMagnus Damm } 937f627f03SMagnus Damm }; 947f627f03SMagnus Damm 957f627f03SMagnus Damm static struct platform_device uart1_device = { 967f627f03SMagnus Damm .name = "serial8250-em", 977f627f03SMagnus Damm .id = 1, 987f627f03SMagnus Damm .num_resources = ARRAY_SIZE(uart1_resources), 997f627f03SMagnus Damm .resource = uart1_resources, 1007f627f03SMagnus Damm }; 1017f627f03SMagnus Damm 1027f627f03SMagnus Damm static struct resource uart2_resources[] = { 1037f627f03SMagnus Damm [0] = { 1047f627f03SMagnus Damm .start = 0xe1040000, 1057f627f03SMagnus Damm .end = 0xe1040037, 1067f627f03SMagnus Damm .flags = IORESOURCE_MEM, 1077f627f03SMagnus Damm }, 1087f627f03SMagnus Damm [1] = { 1097f627f03SMagnus Damm .start = 42, 1107f627f03SMagnus Damm .flags = IORESOURCE_IRQ, 1117f627f03SMagnus Damm } 1127f627f03SMagnus Damm }; 1137f627f03SMagnus Damm 1147f627f03SMagnus Damm static struct platform_device uart2_device = { 1157f627f03SMagnus Damm .name = "serial8250-em", 1167f627f03SMagnus Damm .id = 2, 1177f627f03SMagnus Damm .num_resources = ARRAY_SIZE(uart2_resources), 1187f627f03SMagnus Damm .resource = uart2_resources, 1197f627f03SMagnus Damm }; 1207f627f03SMagnus Damm 1217f627f03SMagnus Damm static struct resource uart3_resources[] = { 1227f627f03SMagnus Damm [0] = { 1237f627f03SMagnus Damm .start = 0xe1050000, 1247f627f03SMagnus Damm .end = 0xe1050037, 1257f627f03SMagnus Damm .flags = IORESOURCE_MEM, 1267f627f03SMagnus Damm }, 1277f627f03SMagnus Damm [1] = { 1287f627f03SMagnus Damm .start = 43, 1297f627f03SMagnus Damm .flags = IORESOURCE_IRQ, 1307f627f03SMagnus Damm } 1317f627f03SMagnus Damm }; 1327f627f03SMagnus Damm 1337f627f03SMagnus Damm static struct platform_device uart3_device = { 1347f627f03SMagnus Damm .name = "serial8250-em", 1357f627f03SMagnus Damm .id = 3, 1367f627f03SMagnus Damm .num_resources = ARRAY_SIZE(uart3_resources), 1377f627f03SMagnus Damm .resource = uart3_resources, 1387f627f03SMagnus Damm }; 1397f627f03SMagnus Damm 1407f627f03SMagnus Damm /* STI */ 1417f627f03SMagnus Damm static struct resource sti_resources[] = { 1427f627f03SMagnus Damm [0] = { 1437f627f03SMagnus Damm .name = "STI", 1447f627f03SMagnus Damm .start = 0xe0180000, 1457f627f03SMagnus Damm .end = 0xe0180053, 1467f627f03SMagnus Damm .flags = IORESOURCE_MEM, 1477f627f03SMagnus Damm }, 1487f627f03SMagnus Damm [1] = { 1497f627f03SMagnus Damm .start = 157, 1507f627f03SMagnus Damm .flags = IORESOURCE_IRQ, 1517f627f03SMagnus Damm }, 1527f627f03SMagnus Damm }; 1537f627f03SMagnus Damm 1547f627f03SMagnus Damm static struct platform_device sti_device = { 1557f627f03SMagnus Damm .name = "em_sti", 1567f627f03SMagnus Damm .id = 0, 1577f627f03SMagnus Damm .resource = sti_resources, 1587f627f03SMagnus Damm .num_resources = ARRAY_SIZE(sti_resources), 1597f627f03SMagnus Damm }; 1607f627f03SMagnus Damm 161088efd92SMagnus Damm 162088efd92SMagnus Damm /* GIO */ 163088efd92SMagnus Damm static struct gpio_em_config gio0_config = { 164088efd92SMagnus Damm .gpio_base = 0, 165088efd92SMagnus Damm .irq_base = EMEV2_GPIO_IRQ(0), 166088efd92SMagnus Damm .number_of_pins = 32, 167088efd92SMagnus Damm }; 168088efd92SMagnus Damm 169088efd92SMagnus Damm static struct resource gio0_resources[] = { 170088efd92SMagnus Damm [0] = { 171088efd92SMagnus Damm .name = "GIO_000", 172088efd92SMagnus Damm .start = 0xe0050000, 173088efd92SMagnus Damm .end = 0xe005002b, 174088efd92SMagnus Damm .flags = IORESOURCE_MEM, 175088efd92SMagnus Damm }, 176088efd92SMagnus Damm [1] = { 177088efd92SMagnus Damm .name = "GIO_000", 178088efd92SMagnus Damm .start = 0xe0050040, 179088efd92SMagnus Damm .end = 0xe005005f, 180088efd92SMagnus Damm .flags = IORESOURCE_MEM, 181088efd92SMagnus Damm }, 182088efd92SMagnus Damm [2] = { 183088efd92SMagnus Damm .start = 99, 184088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 185088efd92SMagnus Damm }, 186088efd92SMagnus Damm [3] = { 187088efd92SMagnus Damm .start = 100, 188088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 189088efd92SMagnus Damm }, 190088efd92SMagnus Damm }; 191088efd92SMagnus Damm 192088efd92SMagnus Damm static struct platform_device gio0_device = { 193088efd92SMagnus Damm .name = "em_gio", 194088efd92SMagnus Damm .id = 0, 195088efd92SMagnus Damm .resource = gio0_resources, 196088efd92SMagnus Damm .num_resources = ARRAY_SIZE(gio0_resources), 197088efd92SMagnus Damm .dev = { 198088efd92SMagnus Damm .platform_data = &gio0_config, 199088efd92SMagnus Damm }, 200088efd92SMagnus Damm }; 201088efd92SMagnus Damm 202088efd92SMagnus Damm static struct gpio_em_config gio1_config = { 203088efd92SMagnus Damm .gpio_base = 32, 204088efd92SMagnus Damm .irq_base = EMEV2_GPIO_IRQ(32), 205088efd92SMagnus Damm .number_of_pins = 32, 206088efd92SMagnus Damm }; 207088efd92SMagnus Damm 208088efd92SMagnus Damm static struct resource gio1_resources[] = { 209088efd92SMagnus Damm [0] = { 210088efd92SMagnus Damm .name = "GIO_032", 211088efd92SMagnus Damm .start = 0xe0050080, 212088efd92SMagnus Damm .end = 0xe00500ab, 213088efd92SMagnus Damm .flags = IORESOURCE_MEM, 214088efd92SMagnus Damm }, 215088efd92SMagnus Damm [1] = { 216088efd92SMagnus Damm .name = "GIO_032", 217088efd92SMagnus Damm .start = 0xe00500c0, 218088efd92SMagnus Damm .end = 0xe00500df, 219088efd92SMagnus Damm .flags = IORESOURCE_MEM, 220088efd92SMagnus Damm }, 221088efd92SMagnus Damm [2] = { 222088efd92SMagnus Damm .start = 101, 223088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 224088efd92SMagnus Damm }, 225088efd92SMagnus Damm [3] = { 226088efd92SMagnus Damm .start = 102, 227088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 228088efd92SMagnus Damm }, 229088efd92SMagnus Damm }; 230088efd92SMagnus Damm 231088efd92SMagnus Damm static struct platform_device gio1_device = { 232088efd92SMagnus Damm .name = "em_gio", 233088efd92SMagnus Damm .id = 1, 234088efd92SMagnus Damm .resource = gio1_resources, 235088efd92SMagnus Damm .num_resources = ARRAY_SIZE(gio1_resources), 236088efd92SMagnus Damm .dev = { 237088efd92SMagnus Damm .platform_data = &gio1_config, 238088efd92SMagnus Damm }, 239088efd92SMagnus Damm }; 240088efd92SMagnus Damm 241088efd92SMagnus Damm static struct gpio_em_config gio2_config = { 242088efd92SMagnus Damm .gpio_base = 64, 243088efd92SMagnus Damm .irq_base = EMEV2_GPIO_IRQ(64), 244088efd92SMagnus Damm .number_of_pins = 32, 245088efd92SMagnus Damm }; 246088efd92SMagnus Damm 247088efd92SMagnus Damm static struct resource gio2_resources[] = { 248088efd92SMagnus Damm [0] = { 249088efd92SMagnus Damm .name = "GIO_064", 250088efd92SMagnus Damm .start = 0xe0050100, 251088efd92SMagnus Damm .end = 0xe005012b, 252088efd92SMagnus Damm .flags = IORESOURCE_MEM, 253088efd92SMagnus Damm }, 254088efd92SMagnus Damm [1] = { 255088efd92SMagnus Damm .name = "GIO_064", 256088efd92SMagnus Damm .start = 0xe0050140, 257088efd92SMagnus Damm .end = 0xe005015f, 258088efd92SMagnus Damm .flags = IORESOURCE_MEM, 259088efd92SMagnus Damm }, 260088efd92SMagnus Damm [2] = { 261088efd92SMagnus Damm .start = 103, 262088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 263088efd92SMagnus Damm }, 264088efd92SMagnus Damm [3] = { 265088efd92SMagnus Damm .start = 104, 266088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 267088efd92SMagnus Damm }, 268088efd92SMagnus Damm }; 269088efd92SMagnus Damm 270088efd92SMagnus Damm static struct platform_device gio2_device = { 271088efd92SMagnus Damm .name = "em_gio", 272088efd92SMagnus Damm .id = 2, 273088efd92SMagnus Damm .resource = gio2_resources, 274088efd92SMagnus Damm .num_resources = ARRAY_SIZE(gio2_resources), 275088efd92SMagnus Damm .dev = { 276088efd92SMagnus Damm .platform_data = &gio2_config, 277088efd92SMagnus Damm }, 278088efd92SMagnus Damm }; 279088efd92SMagnus Damm 280088efd92SMagnus Damm static struct gpio_em_config gio3_config = { 281088efd92SMagnus Damm .gpio_base = 96, 282088efd92SMagnus Damm .irq_base = EMEV2_GPIO_IRQ(96), 283088efd92SMagnus Damm .number_of_pins = 32, 284088efd92SMagnus Damm }; 285088efd92SMagnus Damm 286088efd92SMagnus Damm static struct resource gio3_resources[] = { 287088efd92SMagnus Damm [0] = { 288088efd92SMagnus Damm .name = "GIO_096", 2891eb14ea1SMagnus Damm .start = 0xe0050180, 2901eb14ea1SMagnus Damm .end = 0xe00501ab, 291088efd92SMagnus Damm .flags = IORESOURCE_MEM, 292088efd92SMagnus Damm }, 293088efd92SMagnus Damm [1] = { 294088efd92SMagnus Damm .name = "GIO_096", 2951eb14ea1SMagnus Damm .start = 0xe00501c0, 2961eb14ea1SMagnus Damm .end = 0xe00501df, 297088efd92SMagnus Damm .flags = IORESOURCE_MEM, 298088efd92SMagnus Damm }, 299088efd92SMagnus Damm [2] = { 300088efd92SMagnus Damm .start = 105, 301088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 302088efd92SMagnus Damm }, 303088efd92SMagnus Damm [3] = { 304088efd92SMagnus Damm .start = 106, 305088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 306088efd92SMagnus Damm }, 307088efd92SMagnus Damm }; 308088efd92SMagnus Damm 309088efd92SMagnus Damm static struct platform_device gio3_device = { 310088efd92SMagnus Damm .name = "em_gio", 311088efd92SMagnus Damm .id = 3, 312088efd92SMagnus Damm .resource = gio3_resources, 313088efd92SMagnus Damm .num_resources = ARRAY_SIZE(gio3_resources), 314088efd92SMagnus Damm .dev = { 315088efd92SMagnus Damm .platform_data = &gio3_config, 316088efd92SMagnus Damm }, 317088efd92SMagnus Damm }; 318088efd92SMagnus Damm 319088efd92SMagnus Damm static struct gpio_em_config gio4_config = { 320088efd92SMagnus Damm .gpio_base = 128, 321088efd92SMagnus Damm .irq_base = EMEV2_GPIO_IRQ(128), 322088efd92SMagnus Damm .number_of_pins = 31, 323088efd92SMagnus Damm }; 324088efd92SMagnus Damm 325088efd92SMagnus Damm static struct resource gio4_resources[] = { 326088efd92SMagnus Damm [0] = { 327088efd92SMagnus Damm .name = "GIO_128", 328088efd92SMagnus Damm .start = 0xe0050200, 329088efd92SMagnus Damm .end = 0xe005022b, 330088efd92SMagnus Damm .flags = IORESOURCE_MEM, 331088efd92SMagnus Damm }, 332088efd92SMagnus Damm [1] = { 333088efd92SMagnus Damm .name = "GIO_128", 334088efd92SMagnus Damm .start = 0xe0050240, 335088efd92SMagnus Damm .end = 0xe005025f, 336088efd92SMagnus Damm .flags = IORESOURCE_MEM, 337088efd92SMagnus Damm }, 338088efd92SMagnus Damm [2] = { 339088efd92SMagnus Damm .start = 107, 340088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 341088efd92SMagnus Damm }, 342088efd92SMagnus Damm [3] = { 343088efd92SMagnus Damm .start = 108, 344088efd92SMagnus Damm .flags = IORESOURCE_IRQ, 345088efd92SMagnus Damm }, 346088efd92SMagnus Damm }; 347088efd92SMagnus Damm 348088efd92SMagnus Damm static struct platform_device gio4_device = { 349088efd92SMagnus Damm .name = "em_gio", 350088efd92SMagnus Damm .id = 4, 351088efd92SMagnus Damm .resource = gio4_resources, 352088efd92SMagnus Damm .num_resources = ARRAY_SIZE(gio4_resources), 353088efd92SMagnus Damm .dev = { 354088efd92SMagnus Damm .platform_data = &gio4_config, 355088efd92SMagnus Damm }, 356088efd92SMagnus Damm }; 357088efd92SMagnus Damm 358e433d444STetsuyuki Kobayashi static struct resource pmu_resources[] = { 359e433d444STetsuyuki Kobayashi [0] = { 360e433d444STetsuyuki Kobayashi .start = 152, 361e433d444STetsuyuki Kobayashi .end = 152, 362e433d444STetsuyuki Kobayashi .flags = IORESOURCE_IRQ, 363e433d444STetsuyuki Kobayashi }, 364e433d444STetsuyuki Kobayashi [1] = { 365e433d444STetsuyuki Kobayashi .start = 153, 366e433d444STetsuyuki Kobayashi .end = 153, 367e433d444STetsuyuki Kobayashi .flags = IORESOURCE_IRQ, 368e433d444STetsuyuki Kobayashi }, 369e433d444STetsuyuki Kobayashi }; 370e433d444STetsuyuki Kobayashi 371e433d444STetsuyuki Kobayashi static struct platform_device pmu_device = { 372e433d444STetsuyuki Kobayashi .name = "arm-pmu", 373e433d444STetsuyuki Kobayashi .id = -1, 374e433d444STetsuyuki Kobayashi .num_resources = ARRAY_SIZE(pmu_resources), 375e433d444STetsuyuki Kobayashi .resource = pmu_resources, 376e433d444STetsuyuki Kobayashi }; 377e433d444STetsuyuki Kobayashi 3784146fa88SMagnus Damm static struct platform_device *emev2_devices[] __initdata = { 3797f627f03SMagnus Damm &uart0_device, 3807f627f03SMagnus Damm &uart1_device, 3817f627f03SMagnus Damm &uart2_device, 3827f627f03SMagnus Damm &uart3_device, 3837f627f03SMagnus Damm &sti_device, 384088efd92SMagnus Damm &gio0_device, 385088efd92SMagnus Damm &gio1_device, 386088efd92SMagnus Damm &gio2_device, 387088efd92SMagnus Damm &gio3_device, 388088efd92SMagnus Damm &gio4_device, 389e433d444STetsuyuki Kobayashi &pmu_device, 3907f627f03SMagnus Damm }; 3917f627f03SMagnus Damm 3927f627f03SMagnus Damm void __init emev2_add_standard_devices(void) 3937f627f03SMagnus Damm { 3947f627f03SMagnus Damm emev2_clock_init(); 3957f627f03SMagnus Damm 3964146fa88SMagnus Damm platform_add_devices(emev2_devices, ARRAY_SIZE(emev2_devices)); 3977f627f03SMagnus Damm } 3987f627f03SMagnus Damm 3994146fa88SMagnus Damm void __init emev2_init_delay(void) 4007f627f03SMagnus Damm { 4017f627f03SMagnus Damm shmobile_setup_delay(533, 1, 3); /* Cortex-A9 @ 533MHz */ 4023d5de271SMagnus Damm } 4033d5de271SMagnus Damm 4047f627f03SMagnus Damm void __init emev2_init_irq(void) 4057f627f03SMagnus Damm { 4067f627f03SMagnus Damm void __iomem *gic_dist_base; 4077f627f03SMagnus Damm void __iomem *gic_cpu_base; 4087f627f03SMagnus Damm 4097f627f03SMagnus Damm /* Static mappings, never released */ 4107f627f03SMagnus Damm gic_dist_base = ioremap(0xe0028000, PAGE_SIZE); 4117f627f03SMagnus Damm gic_cpu_base = ioremap(0xe0020000, PAGE_SIZE); 4127f627f03SMagnus Damm BUG_ON(!gic_dist_base || !gic_cpu_base); 4137f627f03SMagnus Damm 4147f627f03SMagnus Damm /* Use GIC to handle interrupts */ 4157f627f03SMagnus Damm gic_init(0, 29, gic_dist_base, gic_cpu_base); 4167f627f03SMagnus Damm } 4173d5de271SMagnus Damm 4183d5de271SMagnus Damm #ifdef CONFIG_USE_OF 4193d5de271SMagnus Damm 4203d5de271SMagnus Damm static const char *emev2_boards_compat_dt[] __initdata = { 4213d5de271SMagnus Damm "renesas,emev2", 4223d5de271SMagnus Damm NULL, 4233d5de271SMagnus Damm }; 4243d5de271SMagnus Damm 4253d5de271SMagnus Damm DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)") 426a62580e5SMarc Zyngier .smp = smp_ops(emev2_smp_ops), 4273d5de271SMagnus Damm .init_early = emev2_init_delay, 4283d5de271SMagnus Damm .nr_irqs = NR_IRQS_LEGACY, 4293d5de271SMagnus Damm .dt_compat = emev2_boards_compat_dt, 4303d5de271SMagnus Damm MACHINE_END 4313d5de271SMagnus Damm 4323d5de271SMagnus Damm #endif /* CONFIG_USE_OF */ 433