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 <spmi/spmi.h> 13 #include <linux/ctype.h> 14 15 DECLARE_GLOBAL_DATA_PTR; 16 17 int spmi_reg_read(struct udevice *dev, int usid, int pid, int reg) 18 { 19 const struct dm_spmi_ops *ops = dev_get_driver_ops(dev); 20 21 if (!ops || !ops->read) 22 return -ENOSYS; 23 24 return ops->read(dev, usid, pid, reg); 25 } 26 27 int spmi_reg_write(struct udevice *dev, int usid, int pid, int reg, 28 uint8_t value) 29 { 30 const struct dm_spmi_ops *ops = dev_get_driver_ops(dev); 31 32 if (!ops || !ops->write) 33 return -ENOSYS; 34 35 return ops->write(dev, usid, pid, reg, value); 36 } 37 38 static int spmi_post_bind(struct udevice *dev) 39 { 40 return dm_scan_fdt_dev(dev); 41 } 42 43 UCLASS_DRIVER(spmi) = { 44 .id = UCLASS_SPMI, 45 .name = "spmi", 46 .post_bind = spmi_post_bind, 47 }; 48