11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/***************************************************************************/ 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * linux/arch/m68knommu/platform/5249/config.c 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2002, Greg Ungerer (gerg@snapgear.com) 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/***************************************************************************/ 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/kernel.h> 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/param.h> 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/init.h> 145f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer#include <linux/io.h> 15fa1fc24662d57170259948314b0759376eb75777Greg Ungerer#include <linux/platform_device.h> 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/machdep.h> 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/coldfire.h> 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/mcfsim.h> 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/***************************************************************************/ 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 224a1479b6ec268d527b842878da59712620dca78cGreg Ungerer#ifdef CONFIG_M5249C3 234a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 244a1479b6ec268d527b842878da59712620dca78cGreg Ungererstatic struct resource m5249_smc91x_resources[] = { 254a1479b6ec268d527b842878da59712620dca78cGreg Ungerer { 264a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .start = 0xe0000300, 274a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .end = 0xe0000300 + 0x100, 284a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .flags = IORESOURCE_MEM, 294a1479b6ec268d527b842878da59712620dca78cGreg Ungerer }, 304a1479b6ec268d527b842878da59712620dca78cGreg Ungerer { 314a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .start = MCFINTC2_GPIOIRQ6, 324a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .end = MCFINTC2_GPIOIRQ6, 334a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .flags = IORESOURCE_IRQ, 344a1479b6ec268d527b842878da59712620dca78cGreg Ungerer }, 354a1479b6ec268d527b842878da59712620dca78cGreg Ungerer}; 364a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 374a1479b6ec268d527b842878da59712620dca78cGreg Ungererstatic struct platform_device m5249_smc91x = { 384a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .name = "smc91x", 394a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .id = 0, 404a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .num_resources = ARRAY_SIZE(m5249_smc91x_resources), 414a1479b6ec268d527b842878da59712620dca78cGreg Ungerer .resource = m5249_smc91x_resources, 424a1479b6ec268d527b842878da59712620dca78cGreg Ungerer}; 434a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 444a1479b6ec268d527b842878da59712620dca78cGreg Ungerer#endif /* CONFIG_M5249C3 */ 454a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 46fa1fc24662d57170259948314b0759376eb75777Greg Ungererstatic struct platform_device *m5249_devices[] __initdata = { 47fa1fc24662d57170259948314b0759376eb75777Greg Ungerer#ifdef CONFIG_M5249C3 48fa1fc24662d57170259948314b0759376eb75777Greg Ungerer &m5249_smc91x, 49fa1fc24662d57170259948314b0759376eb75777Greg Ungerer#endif 5091d60417212fa6b100107384c5e4f5663ab69c8fSteven King}; 5191d60417212fa6b100107384c5e4f5663ab69c8fSteven King 52fa1fc24662d57170259948314b0759376eb75777Greg Ungerer/***************************************************************************/ 5391d60417212fa6b100107384c5e4f5663ab69c8fSteven King 5483ca60094e5e907b8b43c60b4c29b1119604cbb8Steven King#if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) 5591d60417212fa6b100107384c5e4f5663ab69c8fSteven King 5691d60417212fa6b100107384c5e4f5663ab69c8fSteven Kingstatic void __init m5249_qspi_init(void) 5791d60417212fa6b100107384c5e4f5663ab69c8fSteven King{ 5891d60417212fa6b100107384c5e4f5663ab69c8fSteven King /* QSPI irq setup */ 5991d60417212fa6b100107384c5e4f5663ab69c8fSteven King writeb(MCFSIM_ICR_AUTOVEC | MCFSIM_ICR_LEVEL4 | MCFSIM_ICR_PRI0, 6091d60417212fa6b100107384c5e4f5663ab69c8fSteven King MCF_MBAR + MCFSIM_QSPIICR); 6191d60417212fa6b100107384c5e4f5663ab69c8fSteven King mcf_mapirq2imr(MCF_IRQ_QSPI, MCFINTC_QSPI); 6291d60417212fa6b100107384c5e4f5663ab69c8fSteven King} 6391d60417212fa6b100107384c5e4f5663ab69c8fSteven King 6483ca60094e5e907b8b43c60b4c29b1119604cbb8Steven King#endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */ 655f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer 665f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer/***************************************************************************/ 675f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer 684a1479b6ec268d527b842878da59712620dca78cGreg Ungerer#ifdef CONFIG_M5249C3 694a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 704a1479b6ec268d527b842878da59712620dca78cGreg Ungererstatic void __init m5249_smc91x_init(void) 714a1479b6ec268d527b842878da59712620dca78cGreg Ungerer{ 724a1479b6ec268d527b842878da59712620dca78cGreg Ungerer u32 gpio; 734a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 744a1479b6ec268d527b842878da59712620dca78cGreg Ungerer /* Set the GPIO line as interrupt source for smc91x device */ 754a1479b6ec268d527b842878da59712620dca78cGreg Ungerer gpio = readl(MCF_MBAR2 + MCFSIM2_GPIOINTENABLE); 764a1479b6ec268d527b842878da59712620dca78cGreg Ungerer writel(gpio | 0x40, MCF_MBAR2 + MCFSIM2_GPIOINTENABLE); 774a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 784a1479b6ec268d527b842878da59712620dca78cGreg Ungerer gpio = readl(MCF_MBAR2 + MCFSIM2_INTLEVEL5); 794a1479b6ec268d527b842878da59712620dca78cGreg Ungerer writel(gpio | 0x04000000, MCF_MBAR2 + MCFSIM2_INTLEVEL5); 804a1479b6ec268d527b842878da59712620dca78cGreg Ungerer} 814a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 824a1479b6ec268d527b842878da59712620dca78cGreg Ungerer#endif /* CONFIG_M5249C3 */ 834a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 844a1479b6ec268d527b842878da59712620dca78cGreg Ungerer/***************************************************************************/ 854a1479b6ec268d527b842878da59712620dca78cGreg Ungerer 865f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerervoid __init config_BSP(char *commandp, int size) 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 8835aefb2645d1ae7576699b2d7b66d6c9503113fcGreg Ungerer mach_sched_init = hw_timer_init; 89d894b89bf74322845f776bde4d72b70b58926886Greg Ungerer 904a1479b6ec268d527b842878da59712620dca78cGreg Ungerer#ifdef CONFIG_M5249C3 914a1479b6ec268d527b842878da59712620dca78cGreg Ungerer m5249_smc91x_init(); 924a1479b6ec268d527b842878da59712620dca78cGreg Ungerer#endif 9383ca60094e5e907b8b43c60b4c29b1119604cbb8Steven King#if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) 9491d60417212fa6b100107384c5e4f5663ab69c8fSteven King m5249_qspi_init(); 9591d60417212fa6b100107384c5e4f5663ab69c8fSteven King#endif 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/***************************************************************************/ 995f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer 1005f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungererstatic int __init init_BSP(void) 1015f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer{ 1025f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer platform_add_devices(m5249_devices, ARRAY_SIZE(m5249_devices)); 1035f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer return 0; 1045f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer} 1055f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer 1065f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungererarch_initcall(init_BSP); 1075f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer 1085f84bd52f03f8606982c75dfbda8c4cc1b725feeGreg Ungerer/***************************************************************************/ 109