1 /* 2 * SPMI bus uclass driver 3 * 4 * (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com> 5 * 6 * SPDX-License-Identifier: GPL-2.0+ 7 */ 8 9 #include <common.h> 10 #include <dm.h> 11 #include <errno.h> 12 #include <dm/root.h> 13 #include <spmi/spmi.h> 14 #include <linux/ctype.h> 15 16 DECLARE_GLOBAL_DATA_PTR; 17 18 int spmi_reg_read(struct udevice *dev, int usid, int pid, int reg) 19 { 20 const struct dm_spmi_ops *ops = dev_get_driver_ops(dev); 21 22 if (!ops || !ops->read) 23 return -ENOSYS; 24 25 return ops->read(dev, usid, pid, reg); 26 } 27 28 int spmi_reg_write(struct udevice *dev, int usid, int pid, int reg, 29 uint8_t value) 30 { 31 const struct dm_spmi_ops *ops = dev_get_driver_ops(dev); 32 33 if (!ops || !ops->write) 34 return -ENOSYS; 35 36 return ops->write(dev, usid, pid, reg, value); 37 } 38 39 static int spmi_post_bind(struct udevice *dev) 40 { 41 return dm_scan_fdt_node(dev, gd->fdt_blob, dev->of_offset, false); 42 } 43 44 UCLASS_DRIVER(spmi) = { 45 .id = UCLASS_SPMI, 46 .name = "spmi", 47 .post_bind = spmi_post_bind, 48 }; 49