pmic: Add support for setting transmission length in uclass private data
authorLukasz Majewski <lukma@denx.de>
Tue, 15 May 2018 14:26:35 +0000 (16:26 +0200)
committerStefano Babic <sbabic@denx.de>
Fri, 18 May 2018 06:27:26 +0000 (08:27 +0200)
The struct uc_pmic_priv's trans_len field stores the number of types to
be transmitted per PMIC transfer.

Signed-off-by: Lukasz Majewski <lukma@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/power/pmic/pmic-uclass.c
include/power/pmic.h

index 5f0f6ff93e14449ce9c8064819c35c5c7b064728..d7e559a61560dc7d0a422661c67dac2fa0e76ccb 100644 (file)
@@ -165,7 +165,17 @@ int pmic_clrsetbits(struct udevice *dev, uint reg, uint clr, uint set)
        return pmic_reg_write(dev, reg, byte);
 }
 
+static int pmic_pre_probe(struct udevice *dev)
+{
+       struct uc_pmic_priv *pmic_priv = dev_get_uclass_priv(dev);
+
+       pmic_priv->trans_len = 1;
+       return 0;
+}
+
 UCLASS_DRIVER(pmic) = {
        .id             = UCLASS_PMIC,
        .name           = "pmic",
+       .pre_probe      = pmic_pre_probe,
+       .per_device_auto_alloc_size = sizeof(struct uc_pmic_priv),
 };
index 2ca9365fc8ad4016dd8c719a504897d63e9a2f0c..be9de6b4de7e610516171386c3272440dfc9f52a 100644 (file)
@@ -297,6 +297,15 @@ int pmic_reg_write(struct udevice *dev, uint reg, uint value);
  */
 int pmic_clrsetbits(struct udevice *dev, uint reg, uint clr, uint set);
 
+/*
+ * This structure holds the private data for PMIC uclass
+ * For now we store information about the number of bytes
+ * being sent at once to the device.
+ */
+struct uc_pmic_priv {
+       uint trans_len;
+};
+
 #endif /* CONFIG_DM_PMIC */
 
 #ifdef CONFIG_POWER