1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright 2011 Freescale Semiconductor, Inc. 4 */ 5 6 #include <asm/mach-imx/iomux-v3.h> 7 #include <asm/arch/iomux.h> 8 #include <asm/io.h> 9 #include <asm/arch/clock.h> 10 #include <asm/arch/sys_proto.h> 11 12 int setup_sata(void) 13 { 14 struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR; 15 int ret; 16 17 if (!is_mx6dq() && !is_mx6dqp()) 18 return 1; 19 20 ret = enable_sata_clock(); 21 if (ret) 22 return ret; 23 24 clrsetbits_le32(&iomuxc_regs->gpr[13], 25 IOMUXC_GPR13_SATA_MASK, 26 IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB 27 |IOMUXC_GPR13_SATA_PHY_7_SATA2M 28 |IOMUXC_GPR13_SATA_SPEED_3G 29 |(3<<IOMUXC_GPR13_SATA_PHY_6_SHIFT) 30 |IOMUXC_GPR13_SATA_SATA_PHY_5_SS_DISABLED 31 |IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_9_16 32 |IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB 33 |IOMUXC_GPR13_SATA_PHY_2_TX_1P104V 34 |IOMUXC_GPR13_SATA_PHY_1_SLOW); 35 36 return 0; 37 } 38