~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/spmi.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/spmi.h (Version linux-6.12-rc7) and /include/linux/spmi.h (Version ccs-tools-1.8.12)


  1 /* SPDX-License-Identifier: GPL-2.0-only */         1 
  2 /* Copyright (c) 2012-2013, The Linux Foundati    
  3  */                                               
  4 #ifndef _LINUX_SPMI_H                             
  5 #define _LINUX_SPMI_H                             
  6                                                   
  7 #include <linux/types.h>                          
  8 #include <linux/device.h>                         
  9 #include <linux/mod_devicetable.h>                
 10                                                   
 11 /* Maximum slave identifier */                    
 12 #define SPMI_MAX_SLAVE_ID               16        
 13                                                   
 14 /* SPMI Commands */                               
 15 #define SPMI_CMD_EXT_WRITE              0x00      
 16 #define SPMI_CMD_RESET                  0x10      
 17 #define SPMI_CMD_SLEEP                  0x11      
 18 #define SPMI_CMD_SHUTDOWN               0x12      
 19 #define SPMI_CMD_WAKEUP                 0x13      
 20 #define SPMI_CMD_AUTHENTICATE           0x14      
 21 #define SPMI_CMD_MSTR_READ              0x15      
 22 #define SPMI_CMD_MSTR_WRITE             0x16      
 23 #define SPMI_CMD_TRANSFER_BUS_OWNERSHIP 0x1A      
 24 #define SPMI_CMD_DDB_MASTER_READ        0x1B      
 25 #define SPMI_CMD_DDB_SLAVE_READ         0x1C      
 26 #define SPMI_CMD_EXT_READ               0x20      
 27 #define SPMI_CMD_EXT_WRITEL             0x30      
 28 #define SPMI_CMD_EXT_READL              0x38      
 29 #define SPMI_CMD_WRITE                  0x40      
 30 #define SPMI_CMD_READ                   0x60      
 31 #define SPMI_CMD_ZERO_WRITE             0x80      
 32                                                   
 33 /**                                               
 34  * struct spmi_device - Basic representation o    
 35  * @dev:        Driver model representation of    
 36  * @ctrl:       SPMI controller managing the b    
 37  * @usid:       This devices' Unique Slave IDe    
 38  */                                               
 39 struct spmi_device {                              
 40         struct device           dev;              
 41         struct spmi_controller  *ctrl;            
 42         u8                      usid;             
 43 };                                                
 44                                                   
 45 static inline struct spmi_device *to_spmi_devi    
 46 {                                                 
 47         return container_of(d, struct spmi_dev    
 48 }                                                 
 49                                                   
 50 static inline void *spmi_device_get_drvdata(co    
 51 {                                                 
 52         return dev_get_drvdata(&sdev->dev);       
 53 }                                                 
 54                                                   
 55 static inline void spmi_device_set_drvdata(str    
 56 {                                                 
 57         dev_set_drvdata(&sdev->dev, data);        
 58 }                                                 
 59                                                   
 60 struct spmi_device *spmi_device_alloc(struct s    
 61                                                   
 62 static inline void spmi_device_put(struct spmi    
 63 {                                                 
 64         if (sdev)                                 
 65                 put_device(&sdev->dev);           
 66 }                                                 
 67                                                   
 68 int spmi_device_add(struct spmi_device *sdev);    
 69                                                   
 70 void spmi_device_remove(struct spmi_device *sd    
 71                                                   
 72 /**                                               
 73  * struct spmi_controller - interface to the S    
 74  * @dev:        Driver model representation of    
 75  * @nr:         board-specific number identifi    
 76  * @cmd:        sends a non-data command seque    
 77  * @read_cmd:   sends a register read command     
 78  * @write_cmd:  sends a register write command    
 79  */                                               
 80 struct spmi_controller {                          
 81         struct device           dev;              
 82         unsigned int            nr;               
 83         int     (*cmd)(struct spmi_controller     
 84         int     (*read_cmd)(struct spmi_contro    
 85                             u8 sid, u16 addr,     
 86         int     (*write_cmd)(struct spmi_contr    
 87                              u8 sid, u16 addr,    
 88 };                                                
 89                                                   
 90 static inline struct spmi_controller *to_spmi_    
 91 {                                                 
 92         return container_of(d, struct spmi_con    
 93 }                                                 
 94                                                   
 95 static inline                                     
 96 void *spmi_controller_get_drvdata(const struct    
 97 {                                                 
 98         return dev_get_drvdata(&ctrl->dev);       
 99 }                                                 
100                                                   
101 static inline void spmi_controller_set_drvdata    
102                                                   
103 {                                                 
104         dev_set_drvdata(&ctrl->dev, data);        
105 }                                                 
106                                                   
107 struct spmi_controller *spmi_controller_alloc(    
108                                                   
109                                                   
110 /**                                               
111  * spmi_controller_put() - decrement controlle    
112  * @ctrl        SPMI controller.                  
113  */                                               
114 static inline void spmi_controller_put(struct     
115 {                                                 
116         if (ctrl)                                 
117                 put_device(&ctrl->dev);           
118 }                                                 
119                                                   
120 int spmi_controller_add(struct spmi_controller    
121 void spmi_controller_remove(struct spmi_contro    
122                                                   
123 struct spmi_controller *devm_spmi_controller_a    
124 int devm_spmi_controller_add(struct device *pa    
125                                                   
126 /**                                               
127  * struct spmi_driver - SPMI slave device driv    
128  * @driver:     SPMI device drivers should ini    
129  *              this structure.                   
130  * @probe:      binds this driver to a SPMI de    
131  * @remove:     unbinds this driver from the S    
132  *                                                
133  * If PM runtime support is desired for a slav    
134  * pm_runtime_put() from their probe() routine    
135  * pm_runtime_get() in remove()).  PM runtime     
136  * implemented by issuing a SLEEP command to t    
137  * transitioning the slave into the SLEEP stat    
138  * command is sent to the slave to bring it ba    
139  */                                               
140 struct spmi_driver {                              
141         struct device_driver driver;              
142         int     (*probe)(struct spmi_device *s    
143         void    (*remove)(struct spmi_device *    
144         void    (*shutdown)(struct spmi_device    
145 };                                                
146                                                   
147 static inline struct spmi_driver *to_spmi_driv    
148 {                                                 
149         return container_of(d, struct spmi_dri    
150 }                                                 
151                                                   
152 #define spmi_driver_register(sdrv) \              
153         __spmi_driver_register(sdrv, THIS_MODU    
154 int __spmi_driver_register(struct spmi_driver     
155                                                   
156 /**                                               
157  * spmi_driver_unregister() - unregister an SP    
158  * @sdrv:       the driver to unregister          
159  */                                               
160 static inline void spmi_driver_unregister(stru    
161 {                                                 
162         if (sdrv)                                 
163                 driver_unregister(&sdrv->drive    
164 }                                                 
165                                                   
166 #define module_spmi_driver(__spmi_driver) \       
167         module_driver(__spmi_driver, spmi_driv    
168                         spmi_driver_unregister    
169                                                   
170 struct device_node;                               
171                                                   
172 struct spmi_device *spmi_find_device_by_of_nod    
173 int spmi_register_read(struct spmi_device *sde    
174 int spmi_ext_register_read(struct spmi_device     
175                            size_t len);           
176 int spmi_ext_register_readl(struct spmi_device    
177                             size_t len);          
178 int spmi_register_write(struct spmi_device *sd    
179 int spmi_register_zero_write(struct spmi_devic    
180 int spmi_ext_register_write(struct spmi_device    
181                             const u8 *buf, siz    
182 int spmi_ext_register_writel(struct spmi_devic    
183                              const u8 *buf, si    
184 int spmi_command_reset(struct spmi_device *sde    
185 int spmi_command_sleep(struct spmi_device *sde    
186 int spmi_command_wakeup(struct spmi_device *sd    
187 int spmi_command_shutdown(struct spmi_device *    
188                                                   
189 #endif                                            
190                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php