Lines Matching refs:pdata
27 static int xgbe_acpi_support(struct xgbe_prv_data *pdata) in xgbe_acpi_support() argument
29 struct device *dev = pdata->dev; in xgbe_acpi_support()
40 pdata->sysclk_rate = property; in xgbe_acpi_support()
49 pdata->ptpclk_rate = property; in xgbe_acpi_support()
54 static int xgbe_acpi_support(struct xgbe_prv_data *pdata) in xgbe_acpi_support() argument
61 static int xgbe_of_support(struct xgbe_prv_data *pdata) in xgbe_of_support() argument
63 struct device *dev = pdata->dev; in xgbe_of_support()
66 pdata->sysclk = devm_clk_get(dev, XGBE_DMA_CLOCK); in xgbe_of_support()
67 if (IS_ERR(pdata->sysclk)) { in xgbe_of_support()
69 return PTR_ERR(pdata->sysclk); in xgbe_of_support()
71 pdata->sysclk_rate = clk_get_rate(pdata->sysclk); in xgbe_of_support()
74 pdata->ptpclk = devm_clk_get(dev, XGBE_PTP_CLOCK); in xgbe_of_support()
75 if (IS_ERR(pdata->ptpclk)) { in xgbe_of_support()
77 return PTR_ERR(pdata->ptpclk); in xgbe_of_support()
79 pdata->ptpclk_rate = clk_get_rate(pdata->ptpclk); in xgbe_of_support()
84 static struct platform_device *xgbe_of_get_phy_pdev(struct xgbe_prv_data *pdata) in xgbe_of_get_phy_pdev() argument
86 struct device *dev = pdata->dev; in xgbe_of_get_phy_pdev()
103 phy_pdev = pdata->platdev; in xgbe_of_get_phy_pdev()
109 static int xgbe_of_support(struct xgbe_prv_data *pdata) in xgbe_of_support() argument
114 static struct platform_device *xgbe_of_get_phy_pdev(struct xgbe_prv_data *pdata) in xgbe_of_get_phy_pdev() argument
136 static struct platform_device *xgbe_get_phy_pdev(struct xgbe_prv_data *pdata) in xgbe_get_phy_pdev() argument
140 if (pdata->use_acpi) { in xgbe_get_phy_pdev()
141 get_device(pdata->dev); in xgbe_get_phy_pdev()
142 phy_pdev = pdata->platdev; in xgbe_get_phy_pdev()
144 phy_pdev = xgbe_of_get_phy_pdev(pdata); in xgbe_get_phy_pdev()
152 struct xgbe_prv_data *pdata; in xgbe_platform_probe() local
161 pdata = xgbe_alloc_pdata(dev); in xgbe_platform_probe()
162 if (IS_ERR(pdata)) { in xgbe_platform_probe()
163 ret = PTR_ERR(pdata); in xgbe_platform_probe()
167 pdata->platdev = pdev; in xgbe_platform_probe()
168 pdata->adev = ACPI_COMPANION(dev); in xgbe_platform_probe()
169 platform_set_drvdata(pdev, pdata); in xgbe_platform_probe()
172 pdata->use_acpi = dev->of_node ? 0 : 1; in xgbe_platform_probe()
175 pdata->vdata = (struct xgbe_version_data *)device_get_match_data(dev); in xgbe_platform_probe()
177 phy_pdev = xgbe_get_phy_pdev(pdata); in xgbe_platform_probe()
183 pdata->phy_platdev = phy_pdev; in xgbe_platform_probe()
184 pdata->phy_dev = &phy_pdev->dev; in xgbe_platform_probe()
206 pdata->xgmac_regs = devm_platform_ioremap_resource(pdev, 0); in xgbe_platform_probe()
207 if (IS_ERR(pdata->xgmac_regs)) { in xgbe_platform_probe()
209 ret = PTR_ERR(pdata->xgmac_regs); in xgbe_platform_probe()
212 if (netif_msg_probe(pdata)) in xgbe_platform_probe()
213 dev_dbg(dev, "xgmac_regs = %p\n", pdata->xgmac_regs); in xgbe_platform_probe()
215 pdata->xpcs_regs = devm_platform_ioremap_resource(pdev, 1); in xgbe_platform_probe()
216 if (IS_ERR(pdata->xpcs_regs)) { in xgbe_platform_probe()
218 ret = PTR_ERR(pdata->xpcs_regs); in xgbe_platform_probe()
221 if (netif_msg_probe(pdata)) in xgbe_platform_probe()
222 dev_dbg(dev, "xpcs_regs = %p\n", pdata->xpcs_regs); in xgbe_platform_probe()
224 pdata->rxtx_regs = devm_platform_ioremap_resource(phy_pdev, in xgbe_platform_probe()
226 if (IS_ERR(pdata->rxtx_regs)) { in xgbe_platform_probe()
228 ret = PTR_ERR(pdata->rxtx_regs); in xgbe_platform_probe()
231 if (netif_msg_probe(pdata)) in xgbe_platform_probe()
232 dev_dbg(dev, "rxtx_regs = %p\n", pdata->rxtx_regs); in xgbe_platform_probe()
234 pdata->sir0_regs = devm_platform_ioremap_resource(phy_pdev, in xgbe_platform_probe()
236 if (IS_ERR(pdata->sir0_regs)) { in xgbe_platform_probe()
238 ret = PTR_ERR(pdata->sir0_regs); in xgbe_platform_probe()
241 if (netif_msg_probe(pdata)) in xgbe_platform_probe()
242 dev_dbg(dev, "sir0_regs = %p\n", pdata->sir0_regs); in xgbe_platform_probe()
244 pdata->sir1_regs = devm_platform_ioremap_resource(phy_pdev, in xgbe_platform_probe()
246 if (IS_ERR(pdata->sir1_regs)) { in xgbe_platform_probe()
248 ret = PTR_ERR(pdata->sir1_regs); in xgbe_platform_probe()
251 if (netif_msg_probe(pdata)) in xgbe_platform_probe()
252 dev_dbg(dev, "sir1_regs = %p\n", pdata->sir1_regs); in xgbe_platform_probe()
256 pdata->mac_addr, in xgbe_platform_probe()
257 sizeof(pdata->mac_addr)); in xgbe_platform_probe()
258 if (ret || !is_valid_ether_addr(pdata->mac_addr)) { in xgbe_platform_probe()
274 pdata->phy_mode = PHY_INTERFACE_MODE_XGMII; in xgbe_platform_probe()
278 pdata->per_channel_irq = 1; in xgbe_platform_probe()
279 pdata->channel_irq_mode = XGBE_IRQ_MODE_EDGE; in xgbe_platform_probe()
283 if (pdata->use_acpi) in xgbe_platform_probe()
284 ret = xgbe_acpi_support(pdata); in xgbe_platform_probe()
286 ret = xgbe_of_support(pdata); in xgbe_platform_probe()
297 pdata->coherent = (attr == DEV_DMA_COHERENT); in xgbe_platform_probe()
298 if (pdata->coherent) { in xgbe_platform_probe()
299 pdata->arcr = XGBE_DMA_OS_ARCR; in xgbe_platform_probe()
300 pdata->awcr = XGBE_DMA_OS_AWCR; in xgbe_platform_probe()
302 pdata->arcr = XGBE_DMA_SYS_ARCR; in xgbe_platform_probe()
303 pdata->awcr = XGBE_DMA_SYS_AWCR; in xgbe_platform_probe()
307 pdata->tx_max_fifo_size = pdata->vdata->tx_max_fifo_size; in xgbe_platform_probe()
308 pdata->rx_max_fifo_size = pdata->vdata->rx_max_fifo_size; in xgbe_platform_probe()
311 xgbe_set_counts(pdata); in xgbe_platform_probe()
314 pdata->irq_count = 2; in xgbe_platform_probe()
320 pdata->dev_irq = ret; in xgbe_platform_probe()
323 if (pdata->per_channel_irq) { in xgbe_platform_probe()
324 unsigned int i, max = ARRAY_SIZE(pdata->channel_irq); in xgbe_platform_probe()
327 ret = platform_get_irq(pdata->platdev, dma_irqnum++); in xgbe_platform_probe()
331 pdata->channel_irq[i] = ret; in xgbe_platform_probe()
334 pdata->channel_irq_count = max; in xgbe_platform_probe()
336 pdata->irq_count += max; in xgbe_platform_probe()
343 pdata->an_irq = ret; in xgbe_platform_probe()
346 ret = xgbe_config_netdev(pdata); in xgbe_platform_probe()
350 netdev_notice(pdata->netdev, "net device enabled\n"); in xgbe_platform_probe()
358 xgbe_free_pdata(pdata); in xgbe_platform_probe()
368 struct xgbe_prv_data *pdata = platform_get_drvdata(pdev); in xgbe_platform_remove() local
370 xgbe_deconfig_netdev(pdata); in xgbe_platform_remove()
372 platform_device_put(pdata->phy_platdev); in xgbe_platform_remove()
374 xgbe_free_pdata(pdata); in xgbe_platform_remove()
380 struct xgbe_prv_data *pdata = dev_get_drvdata(dev); in xgbe_platform_suspend() local
381 struct net_device *netdev = pdata->netdev; in xgbe_platform_suspend()
389 pdata->lpm_ctrl = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_CTRL1); in xgbe_platform_suspend()
390 pdata->lpm_ctrl |= MDIO_CTRL1_LPOWER; in xgbe_platform_suspend()
391 XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, pdata->lpm_ctrl); in xgbe_platform_suspend()
400 struct xgbe_prv_data *pdata = dev_get_drvdata(dev); in xgbe_platform_resume() local
401 struct net_device *netdev = pdata->netdev; in xgbe_platform_resume()
406 pdata->lpm_ctrl &= ~MDIO_CTRL1_LPOWER; in xgbe_platform_resume()
407 XMDIO_WRITE(pdata, MDIO_MMD_PCS, MDIO_CTRL1, pdata->lpm_ctrl); in xgbe_platform_resume()
415 schedule_work(&pdata->restart_work); in xgbe_platform_resume()