regulator: fixed: honour optionality of enable gpio
[oweals/u-boot.git] / drivers / power / as3722.c
index 4c6de79cd608cae49eae25bfbb4973654897ce9a..c09e1de06f4c51147968978da7234a3aab7db617 100644 (file)
 #define  AS3722_DEVICE_ID 0x0c
 #define AS3722_ASIC_ID2 0x91
 
-static int as3722_read(struct udevice *pmic, u8 reg, u8 *value)
+int as3722_read(struct udevice *pmic, u8 reg, u8 *value)
 {
        int err;
 
-       err = i2c_read(pmic, reg, value, 1);
+       err = dm_i2c_read(pmic, reg, value, 1);
        if (err < 0)
                return err;
 
        return 0;
 }
 
-static int as3722_write(struct udevice *pmic, u8 reg, u8 value)
+int as3722_write(struct udevice *pmic, u8 reg, u8 value)
 {
        int err;
 
-       err = i2c_write(pmic, reg, &value, 1);
+       err = dm_i2c_write(pmic, reg, &value, 1);
        if (err < 0)
                return err;
 
@@ -234,6 +234,15 @@ int as3722_gpio_direction_output(struct udevice *pmic, unsigned int gpio,
        return 0;
 }
 
+/* Temporary function until we get the pmic framework */
+int as3722_get(struct udevice **devp)
+{
+       int bus = 0;
+       int address = 0x40;
+
+       return i2c_get_chip_for_busnum(bus, address, 1, devp);
+}
+
 int as3722_init(struct udevice **devp)
 {
        struct udevice *pmic;
@@ -242,7 +251,7 @@ int as3722_init(struct udevice **devp)
        const unsigned int address = 0x40;
        int err;
 
-       err = i2c_get_chip_for_busnum(bus, address, &pmic);
+       err = i2c_get_chip_for_busnum(bus, address, 1, &pmic);
        if (err)
                return err;
        err = as3722_read_id(pmic, &id, &revision);
@@ -258,7 +267,8 @@ int as3722_init(struct udevice **devp)
 
        debug("AS3722 revision %#x found on I2C bus %u, address %#x\n",
              revision, bus, address);
-       *devp = pmic;
+       if (devp)
+               *devp = pmic;
 
        return 0;
 }