ddata = devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL); if (!ddata) return -ENOMEM;
platform_set_drvdata(pdev, ddata);
err = of_property_read_u32(np, "atmel,flexcom-mode", &ddata->opmode); if (err) return err;
if (ddata->opmode < ATMEL_FLEXCOM_MODE_USART ||
ddata->opmode > ATMEL_FLEXCOM_MODE_TWI) return -EINVAL;
ddata->base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); if (IS_ERR(ddata->base)) return PTR_ERR(ddata->base);
ddata->clk = devm_clk_get(&pdev->dev, NULL); if (IS_ERR(ddata->clk)) return PTR_ERR(ddata->clk);
err = clk_prepare_enable(ddata->clk); if (err) return err;
/* * Set the Operating Mode in the Mode Register: only the selected device * is clocked. Hence, registers of the other serial devices remain * inaccessible and are read as zero. Also the external I/O lines of the * Flexcom are muxed to reach the selected device.
*/
writel(FLEX_MR_OPMODE(ddata->opmode), ddata->base + FLEX_MR);
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.