#define EP_STATE_ENABLED       1
 
 static const unsigned int pcie_gen_freq[] = {
+       GEN1_CORE_CLK_FREQ,     /* PCI_EXP_LNKSTA_CLS == 0; undefined */
        GEN1_CORE_CLK_FREQ,
        GEN2_CORE_CLK_FREQ,
        GEN3_CORE_CLK_FREQ,
 
        speed = dw_pcie_readw_dbi(pci, pcie->pcie_cap_base + PCI_EXP_LNKSTA) &
                PCI_EXP_LNKSTA_CLS;
-       clk_set_rate(pcie->core_clk, pcie_gen_freq[speed - 1]);
+
+       if (speed >= ARRAY_SIZE(pcie_gen_freq))
+               speed = 0;
+
+       clk_set_rate(pcie->core_clk, pcie_gen_freq[speed]);
 
        if (pcie->of_data->has_ltr_req_fix)
                return IRQ_HANDLED;
 
        speed = dw_pcie_readw_dbi(pci, pcie->pcie_cap_base + PCI_EXP_LNKSTA) &
                PCI_EXP_LNKSTA_CLS;
-       clk_set_rate(pcie->core_clk, pcie_gen_freq[speed - 1]);
+
+       if (speed >= ARRAY_SIZE(pcie_gen_freq))
+               speed = 0;
+
+       clk_set_rate(pcie->core_clk, pcie_gen_freq[speed]);
 
        tegra_pcie_enable_interrupts(pp);