0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef _SUNXI_RSB_H
0013 #define _SUNXI_RSB_H
0014
0015 #include <linux/device.h>
0016 #include <linux/regmap.h>
0017 #include <linux/types.h>
0018
0019 struct sunxi_rsb;
0020
0021
0022
0023
0024
0025
0026
0027
0028 struct sunxi_rsb_device {
0029 struct device dev;
0030 struct sunxi_rsb *rsb;
0031 int irq;
0032 u8 rtaddr;
0033 u16 hwaddr;
0034 };
0035
0036 static inline struct sunxi_rsb_device *to_sunxi_rsb_device(struct device *d)
0037 {
0038 return container_of(d, struct sunxi_rsb_device, dev);
0039 }
0040
0041 static inline void *sunxi_rsb_device_get_drvdata(const struct sunxi_rsb_device *rdev)
0042 {
0043 return dev_get_drvdata(&rdev->dev);
0044 }
0045
0046 static inline void sunxi_rsb_device_set_drvdata(struct sunxi_rsb_device *rdev,
0047 void *data)
0048 {
0049 dev_set_drvdata(&rdev->dev, data);
0050 }
0051
0052
0053
0054
0055
0056
0057
0058
0059 struct sunxi_rsb_driver {
0060 struct device_driver driver;
0061 int (*probe)(struct sunxi_rsb_device *rdev);
0062 void (*remove)(struct sunxi_rsb_device *rdev);
0063 };
0064
0065 static inline struct sunxi_rsb_driver *to_sunxi_rsb_driver(struct device_driver *d)
0066 {
0067 return container_of(d, struct sunxi_rsb_driver, driver);
0068 }
0069
0070 int sunxi_rsb_driver_register(struct sunxi_rsb_driver *rdrv);
0071
0072
0073
0074
0075
0076 static inline void sunxi_rsb_driver_unregister(struct sunxi_rsb_driver *rdrv)
0077 {
0078 if (rdrv)
0079 driver_unregister(&rdrv->driver);
0080 }
0081
0082 #define module_sunxi_rsb_driver(__sunxi_rsb_driver) \
0083 module_driver(__sunxi_rsb_driver, sunxi_rsb_driver_register, \
0084 sunxi_rsb_driver_unregister)
0085
0086 struct regmap *__devm_regmap_init_sunxi_rsb(struct sunxi_rsb_device *rdev,
0087 const struct regmap_config *config,
0088 struct lock_class_key *lock_key,
0089 const char *lock_name);
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101 #define devm_regmap_init_sunxi_rsb(rdev, config) \
0102 __regmap_lockdep_wrapper(__devm_regmap_init_sunxi_rsb, #config, \
0103 rdev, config)
0104
0105 #endif