18
18
19
19
static DEFINE_IDA (meson_rst_aux_ida );
20
20
21
- struct meson_reset_adev {
22
- struct auxiliary_device adev ;
23
- struct regmap * map ;
24
- };
25
-
26
- #define to_meson_reset_adev (_adev ) \
27
- container_of((_adev), struct meson_reset_adev, adev)
28
-
29
21
static const struct meson_reset_param meson_a1_audio_param = {
30
22
.reset_ops = & meson_reset_toggle_ops ,
31
23
.reset_num = 32 ,
@@ -72,10 +64,13 @@ static int meson_reset_aux_probe(struct auxiliary_device *adev,
72
64
{
73
65
const struct meson_reset_param * param =
74
66
(const struct meson_reset_param * )(id -> driver_data );
75
- struct meson_reset_adev * raux =
76
- to_meson_reset_adev (adev );
67
+ struct regmap * map ;
68
+
69
+ map = dev_get_regmap (adev -> dev .parent , NULL );
70
+ if (!map )
71
+ return - EINVAL ;
77
72
78
- return meson_reset_controller_register (& adev -> dev , raux -> map , param );
73
+ return meson_reset_controller_register (& adev -> dev , map , param );
79
74
}
80
75
81
76
static struct auxiliary_driver meson_reset_aux_driver = {
@@ -87,11 +82,9 @@ module_auxiliary_driver(meson_reset_aux_driver);
87
82
static void meson_rst_aux_release (struct device * dev )
88
83
{
89
84
struct auxiliary_device * adev = to_auxiliary_dev (dev );
90
- struct meson_reset_adev * raux =
91
- to_meson_reset_adev (adev );
92
85
93
86
ida_free (& meson_rst_aux_ida , adev -> id );
94
- kfree (raux );
87
+ kfree (adev );
95
88
}
96
89
97
90
static void meson_rst_aux_unregister_adev (void * _adev )
@@ -103,24 +96,19 @@ static void meson_rst_aux_unregister_adev(void *_adev)
103
96
}
104
97
105
98
int devm_meson_rst_aux_register (struct device * dev ,
106
- struct regmap * map ,
107
99
const char * adev_name )
108
100
{
109
- struct meson_reset_adev * raux ;
110
101
struct auxiliary_device * adev ;
111
102
int ret ;
112
103
113
- raux = kzalloc (sizeof (* raux ), GFP_KERNEL );
114
- if (!raux )
104
+ adev = kzalloc (sizeof (* adev ), GFP_KERNEL );
105
+ if (!adev )
115
106
return - ENOMEM ;
116
107
117
108
ret = ida_alloc (& meson_rst_aux_ida , GFP_KERNEL );
118
109
if (ret < 0 )
119
- goto raux_free ;
120
-
121
- raux -> map = map ;
110
+ goto adev_free ;
122
111
123
- adev = & raux -> adev ;
124
112
adev -> id = ret ;
125
113
adev -> name = adev_name ;
126
114
adev -> dev .parent = dev ;
@@ -142,8 +130,8 @@ int devm_meson_rst_aux_register(struct device *dev,
142
130
143
131
ida_free :
144
132
ida_free (& meson_rst_aux_ida , adev -> id );
145
- raux_free :
146
- kfree (raux );
133
+ adev_free :
134
+ kfree (adev );
147
135
return ret ;
148
136
}
149
137
EXPORT_SYMBOL_GPL (devm_meson_rst_aux_register );
0 commit comments