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