staticint wfx_read32(struct wfx_dev *wdev, int reg, u32 *val)
{ int ret;
__le32 *tmp = kmalloc(sizeof(u32), GFP_KERNEL);
*val = ~0; /* Never return undefined value */ if (!tmp) return -ENOMEM;
ret = wdev->hwbus_ops->copy_from_io(wdev->hwbus_priv, reg, tmp, sizeof(u32)); if (ret >= 0)
*val = le32_to_cpu(*tmp);
kfree(tmp); if (ret)
dev_err(wdev->dev, "%s: bus communication error: %d\n", __func__, ret); return ret;
}
staticint wfx_write32(struct wfx_dev *wdev, int reg, u32 val)
{ int ret;
__le32 *tmp = kmalloc(sizeof(u32), GFP_KERNEL);
if (!tmp) return -ENOMEM;
*tmp = cpu_to_le32(val);
ret = wdev->hwbus_ops->copy_to_io(wdev->hwbus_priv, reg, tmp, sizeof(u32));
kfree(tmp); if (ret)
dev_err(wdev->dev, "%s: bus communication error: %d\n", __func__, ret); return ret;
}
staticint wfx_read32_locked(struct wfx_dev *wdev, int reg, u32 *val)
{ int ret;
ret = wfx_write32(wdev, WFX_REG_BASE_ADDR, addr); if (ret < 0) goto err;
ret = wfx_read32(wdev, WFX_REG_CONFIG, &cfg); if (ret < 0) goto err;
ret = wfx_write32(wdev, WFX_REG_CONFIG, cfg | prefetch); if (ret < 0) goto err;
for (i = 0; i < 20; i++) {
ret = wfx_read32(wdev, WFX_REG_CONFIG, &cfg); if (ret < 0) goto err; if (!(cfg & prefetch)) break;
usleep_range(200, 250);
} if (i == 20) {
ret = -ETIMEDOUT; goto err;
}
ret = wdev->hwbus_ops->copy_from_io(wdev->hwbus_priv, reg, buf, len);
err: if (ret < 0)
memset(buf, 0xFF, len); /* Never return undefined value */ return ret;
}
staticint wfx_indirect_write(struct wfx_dev *wdev, int reg, u32 addr, constvoid *buf, size_t len)
{ int ret;
int wfx_igpr_reg_read(struct wfx_dev *wdev, int index, u32 *val)
{ int ret;
*val = ~0; /* Never return undefined value */
ret = wfx_write32_locked(wdev, WFX_REG_SET_GEN_R_W, IGPR_RW | index << 24); if (ret) return ret;
ret = wfx_read32_locked(wdev, WFX_REG_SET_GEN_R_W, val); if (ret) return ret;
*val &= IGPR_VALUE; return ret;
}
int wfx_igpr_reg_write(struct wfx_dev *wdev, int index, u32 val)
{ return wfx_write32_locked(wdev, WFX_REG_SET_GEN_R_W, index << 24 | val);
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.1Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-04-28)
¤
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.