if (!plat_dat->axi) {
plat_dat->axi = devm_kzalloc(&pdev->dev, sizeof(struct stmmac_axi),
GFP_KERNEL);
if (!plat_dat->axi) return -ENOMEM;
}
plat_dat->axi->axi_lpi_en = device_property_read_bool(dev, "snps,en-lpi"); if (device_property_read_u32(dev, "snps,write-requests",
&plat_dat->axi->axi_wr_osr_lmt)) { /** * Since the register has a reset value of 1, if property * is missing, default to 1.
*/
plat_dat->axi->axi_wr_osr_lmt = 1;
} else { /** * If property exists, to keep the behavior from dwc_eth_qos, * subtract one after parsing.
*/
plat_dat->axi->axi_wr_osr_lmt--;
}
if (device_property_read_u32(dev, "snps,read-requests",
&plat_dat->axi->axi_rd_osr_lmt)) { /** * Since the register has a reset value of 1, if property * is missing, default to 1.
*/
plat_dat->axi->axi_rd_osr_lmt = 1;
} else { /** * If property exists, to keep the behavior from dwc_eth_qos, * subtract one after parsing.
*/
plat_dat->axi->axi_rd_osr_lmt--;
}
device_property_read_u32(dev, "snps,burst-map", &burst_map);
/* converts burst-map bitmask to burst array */ for (bit_index = 0; bit_index < 7; bit_index++) { if (burst_map & (1 << bit_index)) { switch (bit_index) { case 0:
plat_dat->axi->axi_blen[a_index] = 4; break; case 1:
plat_dat->axi->axi_blen[a_index] = 8; break; case 2:
plat_dat->axi->axi_blen[a_index] = 16; break; case 3:
plat_dat->axi->axi_blen[a_index] = 32; break; case 4:
plat_dat->axi->axi_blen[a_index] = 64; break; case 5:
plat_dat->axi->axi_blen[a_index] = 128; break; case 6:
plat_dat->axi->axi_blen[a_index] = 256; break; default: break;
}
a_index++;
}
}
/** * Since stmmac_platform supports name IRQ only, basic platform * resource initialization is done in the glue logic.
*/
stmmac_res.irq = platform_get_irq(pdev, 0); if (stmmac_res.irq < 0) return stmmac_res.irq;
stmmac_res.wol_irq = stmmac_res.irq;
stmmac_res.addr = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(stmmac_res.addr)) return PTR_ERR(stmmac_res.addr);
plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac); if (IS_ERR(plat_dat)) return PTR_ERR(plat_dat);
ret = devm_clk_bulk_get_all_enabled(&pdev->dev, &plat_dat->clks); if (ret < 0) return dev_err_probe(&pdev->dev, ret, "Failed to retrieve and enable all required clocks\n");
plat_dat->num_clks = ret;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.