1*04868b40SMateusz Kulikowski #ifndef _SPMI_SPMI_H 2*04868b40SMateusz Kulikowski #define _SPMI_SPMI_H 3*04868b40SMateusz Kulikowski 4*04868b40SMateusz Kulikowski /** 5*04868b40SMateusz Kulikowski * struct dm_spmi_ops - SPMI device I/O interface 6*04868b40SMateusz Kulikowski * 7*04868b40SMateusz Kulikowski * Should be implemented by UCLASS_SPMI device drivers. The standard 8*04868b40SMateusz Kulikowski * device operations provides the I/O interface for it's childs. 9*04868b40SMateusz Kulikowski * 10*04868b40SMateusz Kulikowski * @read: read register 'reg' of slave 'usid' and peripheral 'pid' 11*04868b40SMateusz Kulikowski * @write: write register 'reg' of slave 'usid' and peripheral 'pid' 12*04868b40SMateusz Kulikowski * 13*04868b40SMateusz Kulikowski * Each register is 8-bit, both read and write can return negative values 14*04868b40SMateusz Kulikowski * on error. 15*04868b40SMateusz Kulikowski */ 16*04868b40SMateusz Kulikowski struct dm_spmi_ops { 17*04868b40SMateusz Kulikowski int (*read)(struct udevice *dev, int usid, int pid, int reg); 18*04868b40SMateusz Kulikowski int (*write)(struct udevice *dev, int usid, int pid, int reg, 19*04868b40SMateusz Kulikowski uint8_t value); 20*04868b40SMateusz Kulikowski }; 21*04868b40SMateusz Kulikowski 22*04868b40SMateusz Kulikowski /** 23*04868b40SMateusz Kulikowski * spmi_reg_read() - read a register from specific slave/peripheral 24*04868b40SMateusz Kulikowski * 25*04868b40SMateusz Kulikowski * @dev: SPMI bus to read 26*04868b40SMateusz Kulikowski * @usid SlaveID 27*04868b40SMateusz Kulikowski * @pid Peripheral ID 28*04868b40SMateusz Kulikowski * @reg: Register to read 29*04868b40SMateusz Kulikowski * @return value read on success or negative value of errno. 30*04868b40SMateusz Kulikowski */ 31*04868b40SMateusz Kulikowski int spmi_reg_read(struct udevice *dev, int usid, int pid, int reg); 32*04868b40SMateusz Kulikowski 33*04868b40SMateusz Kulikowski /** 34*04868b40SMateusz Kulikowski * spmi_reg_write() - write a register of specific slave/peripheral 35*04868b40SMateusz Kulikowski * 36*04868b40SMateusz Kulikowski * @dev: SPMI bus to write 37*04868b40SMateusz Kulikowski * @usid SlaveID 38*04868b40SMateusz Kulikowski * @pid Peripheral ID 39*04868b40SMateusz Kulikowski * @reg: Register to write 40*04868b40SMateusz Kulikowski * @value: Value to write 41*04868b40SMateusz Kulikowski * @return 0 on success or negative value of errno. 42*04868b40SMateusz Kulikowski */ 43*04868b40SMateusz Kulikowski int spmi_reg_write(struct udevice *dev, int usid, int pid, int reg, 44*04868b40SMateusz Kulikowski uint8_t value); 45*04868b40SMateusz Kulikowski 46*04868b40SMateusz Kulikowski #endif 47