m523x.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /***************************************************************************/
  2. /*
  3. * linux/arch/m68knommu/platform/523x/config.c
  4. *
  5. * Sub-architcture dependent initialization code for the Freescale
  6. * 523x CPUs.
  7. *
  8. * Copyright (C) 1999-2005, Greg Ungerer (gerg@snapgear.com)
  9. * Copyright (C) 2001-2003, SnapGear Inc. (www.snapgear.com)
  10. */
  11. /***************************************************************************/
  12. #include <linux/kernel.h>
  13. #include <linux/param.h>
  14. #include <linux/init.h>
  15. #include <linux/io.h>
  16. #include <asm/machdep.h>
  17. #include <asm/coldfire.h>
  18. #include <asm/mcfsim.h>
  19. #include <asm/mcfgpio.h>
  20. /***************************************************************************/
  21. struct mcf_gpio_chip mcf_gpio_chips[] = {
  22. MCFGPS(PIRQ, 1, 7, MCFEPORT_EPDDR, MCFEPORT_EPDR, MCFEPORT_EPPDR),
  23. MCFGPF(ADDR, 13, 3),
  24. MCFGPF(DATAH, 16, 8),
  25. MCFGPF(DATAL, 24, 8),
  26. MCFGPF(BUSCTL, 32, 8),
  27. MCFGPF(BS, 40, 4),
  28. MCFGPF(CS, 49, 7),
  29. MCFGPF(SDRAM, 56, 6),
  30. MCFGPF(FECI2C, 64, 4),
  31. MCFGPF(UARTH, 72, 2),
  32. MCFGPF(UARTL, 80, 8),
  33. MCFGPF(QSPI, 88, 5),
  34. MCFGPF(TIMER, 96, 8),
  35. MCFGPF(ETPU, 104, 3),
  36. };
  37. unsigned int mcf_gpio_chips_size = ARRAY_SIZE(mcf_gpio_chips);
  38. /***************************************************************************/
  39. #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
  40. static void __init m523x_qspi_init(void)
  41. {
  42. u16 par;
  43. /* setup QSPS pins for QSPI with gpio CS control */
  44. writeb(0x1f, MCFGPIO_PAR_QSPI);
  45. /* and CS2 & CS3 as gpio */
  46. par = readw(MCFGPIO_PAR_TIMER);
  47. par &= 0x3f3f;
  48. writew(par, MCFGPIO_PAR_TIMER);
  49. }
  50. #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */
  51. /***************************************************************************/
  52. static void __init m523x_fec_init(void)
  53. {
  54. u16 par;
  55. u8 v;
  56. /* Set multi-function pins to ethernet use */
  57. par = readw(MCF_IPSBAR + 0x100082);
  58. writew(par | 0xf00, MCF_IPSBAR + 0x100082);
  59. v = readb(MCF_IPSBAR + 0x100078);
  60. writeb(v | 0xc0, MCF_IPSBAR + 0x100078);
  61. }
  62. /***************************************************************************/
  63. void __init config_BSP(char *commandp, int size)
  64. {
  65. mach_sched_init = hw_timer_init;
  66. m523x_fec_init();
  67. #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
  68. m523x_qspi_init();
  69. #endif
  70. }
  71. /***************************************************************************/