static void bcma_pcicore_serdes_workaround(struct bcma_drv_pci *pc) { const u8 serdes_pll_device = 0x1D; const u8 serdes_rx_device = 0x1F; u16 tmp; bcma_pcie_mdio_write(pc, serdes_rx_device, 1 /* Control */, bcma_pcicore_polarity_workaround(pc)); tmp = bcma_pcie_mdio_read(pc, serdes_pll_device, 1 /* Control */); if (tmp & 0x4000) bcma_pcie_mdio_write(pc, serdes_pll_device, 1, tmp & ~0x4000); }
static void bcma_pcicore_serdes_workaround(struct bcma_drv_pci *pc) { u16 tmp; bcma_pcie_mdio_write(pc, BCMA_CORE_PCI_MDIODATA_DEV_RX, BCMA_CORE_PCI_SERDES_RX_CTRL, bcma_pcicore_polarity_workaround(pc)); tmp = bcma_pcie_mdio_read(pc, BCMA_CORE_PCI_MDIODATA_DEV_PLL, BCMA_CORE_PCI_SERDES_PLL_CTRL); if (tmp & BCMA_CORE_PCI_PLL_CTRL_FREQDET_EN) bcma_pcie_mdio_write(pc, BCMA_CORE_PCI_MDIODATA_DEV_PLL, BCMA_CORE_PCI_SERDES_PLL_CTRL, tmp & ~BCMA_CORE_PCI_PLL_CTRL_FREQDET_EN); }