mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-27 09:02:20 +00:00
sandbox: pmic: Correct i2c pmic emulator platdata method
This currently reads the uclass's private data in the ofdata_to_platdata method which is not allowed, since the uclass has not read it from the device tree. This happens in the probe method. Fix it by adding a probe() method and moving the code there. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
b83994dec7
commit
eb7387ae14
1 changed files with 13 additions and 3 deletions
|
@ -105,12 +105,21 @@ static int sandbox_i2c_pmic_ofdata_to_platdata(struct udevice *emul)
|
||||||
{
|
{
|
||||||
struct sandbox_i2c_pmic_plat_data *plat = dev_get_platdata(emul);
|
struct sandbox_i2c_pmic_plat_data *plat = dev_get_platdata(emul);
|
||||||
struct udevice *pmic_dev = i2c_emul_get_device(emul);
|
struct udevice *pmic_dev = i2c_emul_get_device(emul);
|
||||||
struct uc_pmic_priv *priv = dev_get_uclass_priv(pmic_dev);
|
|
||||||
const u8 *reg_defaults;
|
|
||||||
|
|
||||||
debug("%s:%d Setting PMIC default registers\n", __func__, __LINE__);
|
debug("%s:%d Setting PMIC default registers\n", __func__, __LINE__);
|
||||||
plat->reg_count = pmic_reg_count(pmic_dev);
|
plat->reg_count = pmic_reg_count(pmic_dev);
|
||||||
plat->trans_len = priv->trans_len;
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int sandbox_i2c_pmic_probe(struct udevice *emul)
|
||||||
|
{
|
||||||
|
struct sandbox_i2c_pmic_plat_data *plat = dev_get_platdata(emul);
|
||||||
|
struct udevice *pmic_dev = i2c_emul_get_device(emul);
|
||||||
|
struct uc_pmic_priv *upriv = dev_get_uclass_priv(pmic_dev);
|
||||||
|
const u8 *reg_defaults;
|
||||||
|
|
||||||
|
plat->trans_len = upriv->trans_len;
|
||||||
plat->buf_size = plat->reg_count * plat->trans_len;
|
plat->buf_size = plat->reg_count * plat->trans_len;
|
||||||
|
|
||||||
plat->reg = calloc(1, plat->buf_size);
|
plat->reg = calloc(1, plat->buf_size);
|
||||||
|
@ -149,6 +158,7 @@ U_BOOT_DRIVER(sandbox_i2c_pmic_emul) = {
|
||||||
.id = UCLASS_I2C_EMUL,
|
.id = UCLASS_I2C_EMUL,
|
||||||
.of_match = sandbox_i2c_pmic_ids,
|
.of_match = sandbox_i2c_pmic_ids,
|
||||||
.ofdata_to_platdata = sandbox_i2c_pmic_ofdata_to_platdata,
|
.ofdata_to_platdata = sandbox_i2c_pmic_ofdata_to_platdata,
|
||||||
|
.probe = sandbox_i2c_pmic_probe,
|
||||||
.platdata_auto_alloc_size = sizeof(struct sandbox_i2c_pmic_plat_data),
|
.platdata_auto_alloc_size = sizeof(struct sandbox_i2c_pmic_plat_data),
|
||||||
.ops = &sandbox_i2c_pmic_emul_ops,
|
.ops = &sandbox_i2c_pmic_emul_ops,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue