{
struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+ if (!is_mx6sl() && !is_mx6sx()
+ && !is_mx6ul() && !is_mx6ull()
+ && !is_mx6sll()) {
+ /*
+ * imx6sl doesn't have pcie at all.
+ * this bit is not used by imx6sx anymore
+ */
+ u32 val;
+
+ /*
+ * There are about 0.02% percentage, random pcie link down
+ * when warm-reset is used.
+ * clear the ref_ssp_en bit16 of gpr1 to workaround it.
+ * then warm-reset imx6q/dl/solo again.
+ */
+ val = readl(IOMUXC_BASE_ADDR + 0x4);
+ if (val & (0x1 << 16)) {
+ val &= ~(0x1 << 16);
+ writel(val, IOMUXC_BASE_ADDR + 0x4);
+ reset_cpu(0);
+ }
+ }
+
init_aips();
/* Need to clear MMDC_CHx_MASK to make warm reset work. */