ls102xa_sata.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // SPDX-License-Identifier: GPL-2.0+
  2. /*
  3. * Copyright 2015 Freescale Semiconductor, Inc.
  4. */
  5. #include <common.h>
  6. #include <asm/io.h>
  7. #include <asm/arch/immap_ls102xa.h>
  8. #include <ahci.h>
  9. #include <scsi.h>
  10. /* port register default value */
  11. #define AHCI_PORT_PHY_1_CFG 0xa003fffe
  12. #define AHCI_PORT_PHY_2_CFG 0x28183414
  13. #define AHCI_PORT_PHY_3_CFG 0x0e080e06
  14. #define AHCI_PORT_PHY_4_CFG 0x064a080b
  15. #define AHCI_PORT_PHY_5_CFG 0x2aa86470
  16. #define AHCI_PORT_TRANS_CFG 0x08000029
  17. #define SATA_ECC_REG_ADDR 0x20220520
  18. #define SATA_ECC_DISABLE 0x00020000
  19. int ls1021a_sata_init(void)
  20. {
  21. struct ccsr_ahci __iomem *ccsr_ahci = (void *)AHCI_BASE_ADDR;
  22. #ifdef CONFIG_SYS_FSL_ERRATUM_A008407
  23. out_le32((void *)SATA_ECC_REG_ADDR, SATA_ECC_DISABLE);
  24. #endif
  25. out_le32(&ccsr_ahci->ppcfg, AHCI_PORT_PHY_1_CFG);
  26. out_le32(&ccsr_ahci->pp2c, AHCI_PORT_PHY_2_CFG);
  27. out_le32(&ccsr_ahci->pp3c, AHCI_PORT_PHY_3_CFG);
  28. out_le32(&ccsr_ahci->pp4c, AHCI_PORT_PHY_4_CFG);
  29. out_le32(&ccsr_ahci->pp5c, AHCI_PORT_PHY_5_CFG);
  30. out_le32(&ccsr_ahci->ptc, AHCI_PORT_TRANS_CFG);
  31. ahci_init((void __iomem *)AHCI_BASE_ADDR);
  32. scsi_scan(false);
  33. return 0;
  34. }