mtd: sf: Drop plat from sf_probe
[oweals/u-boot.git] / drivers / power / twl4030.c
index ab98d68dfb7e92737833c4ead058991d6dc97ec5..b0d5cba2c49a9268d314f0ad670babf714ccae9c 100644 (file)
@@ -1,9 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (c) 2009 Wind River Systems, Inc.
  * Tom Rix <Tom.Rix at windriver.com>
  *
- * SPDX-License-Identifier:    GPL-2.0+
- *
  * twl4030_power_reset_init is derived from code on omapzoom,
  * git://git.omapzoom.com/repo/u-boot.git
  *
@@ -23,7 +22,9 @@
  *     Syed Mohammed Khasim <khasim at ti.com>
  */
 
+#include <command.h>
 #include <twl4030.h>
+#include <linux/delay.h>
 
 /*
  * Power Reset
@@ -173,10 +174,49 @@ void twl4030_power_mmc_init(int dev_index)
 }
 
 #ifdef CONFIG_CMD_POWEROFF
-int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+int do_poweroff(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
        twl4030_power_off();
 
        return 0;
 }
 #endif
+
+#ifdef CONFIG_DM_I2C
+int twl4030_i2c_write_u8(u8 chip_no, u8 reg, u8 val)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = i2c_get_chip_for_busnum(0, chip_no, 1, &dev);
+       if (ret) {
+               pr_err("unable to get I2C bus. ret %d\n", ret);
+               return ret;
+       }
+       ret = dm_i2c_reg_write(dev, reg, val);
+       if (ret) {
+               pr_err("writing to twl4030 failed. ret %d\n", ret);
+               return ret;
+       }
+       return 0;
+}
+
+int twl4030_i2c_read_u8(u8 chip_no, u8 reg, u8 *valp)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = i2c_get_chip_for_busnum(0, chip_no, 1, &dev);
+       if (ret) {
+               pr_err("unable to get I2C bus. ret %d\n", ret);
+               return ret;
+       }
+       ret = dm_i2c_reg_read(dev, reg);
+       if (ret < 0) {
+               pr_err("reading from twl4030 failed. ret %d\n", ret);
+               return ret;
+       }
+       *valp = (u8)ret;
+       return 0;
+}
+#endif