config.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /***************************************************************************/
  2. /*
  3. * linux/arch/m68knommu/platform/527x/config.c
  4. *
  5. * Sub-architcture dependent initialization code for the Freescale
  6. * 5270/5271 CPUs.
  7. *
  8. * Copyright (C) 1999-2004, Greg Ungerer (gerg@snapgear.com)
  9. * Copyright (C) 2001-2004, 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/mcfuart.h>
  20. /***************************************************************************/
  21. #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
  22. static void __init m527x_qspi_init(void)
  23. {
  24. #if defined(CONFIG_M5271)
  25. u16 par;
  26. /* setup QSPS pins for QSPI with gpio CS control */
  27. writeb(0x1f, MCFGPIO_PAR_QSPI);
  28. /* and CS2 & CS3 as gpio */
  29. par = readw(MCFGPIO_PAR_TIMER);
  30. par &= 0x3f3f;
  31. writew(par, MCFGPIO_PAR_TIMER);
  32. #elif defined(CONFIG_M5275)
  33. /* setup QSPS pins for QSPI with gpio CS control */
  34. writew(0x003e, MCFGPIO_PAR_QSPI);
  35. #endif
  36. }
  37. #endif /* IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI) */
  38. /***************************************************************************/
  39. static void __init m527x_uarts_init(void)
  40. {
  41. u16 sepmask;
  42. /*
  43. * External Pin Mask Setting & Enable External Pin for Interface
  44. */
  45. sepmask = readw(MCF_IPSBAR + MCF_GPIO_PAR_UART);
  46. sepmask |= UART0_ENABLE_MASK | UART1_ENABLE_MASK | UART2_ENABLE_MASK;
  47. writew(sepmask, MCF_IPSBAR + MCF_GPIO_PAR_UART);
  48. }
  49. /***************************************************************************/
  50. static void __init m527x_fec_init(void)
  51. {
  52. u16 par;
  53. u8 v;
  54. /* Set multi-function pins to ethernet mode for fec0 */
  55. #if defined(CONFIG_M5271)
  56. v = readb(MCF_IPSBAR + 0x100047);
  57. writeb(v | 0xf0, MCF_IPSBAR + 0x100047);
  58. #else
  59. par = readw(MCF_IPSBAR + 0x100082);
  60. writew(par | 0xf00, MCF_IPSBAR + 0x100082);
  61. v = readb(MCF_IPSBAR + 0x100078);
  62. writeb(v | 0xc0, MCF_IPSBAR + 0x100078);
  63. /* Set multi-function pins to ethernet mode for fec1 */
  64. par = readw(MCF_IPSBAR + 0x100082);
  65. writew(par | 0xa0, MCF_IPSBAR + 0x100082);
  66. v = readb(MCF_IPSBAR + 0x100079);
  67. writeb(v | 0xc0, MCF_IPSBAR + 0x100079);
  68. #endif
  69. }
  70. /***************************************************************************/
  71. void __init config_BSP(char *commandp, int size)
  72. {
  73. mach_sched_init = hw_timer_init;
  74. m527x_uarts_init();
  75. m527x_fec_init();
  76. #if IS_ENABLED(CONFIG_SPI_COLDFIRE_QSPI)
  77. m527x_qspi_init();
  78. #endif
  79. }
  80. /***************************************************************************/