16
16
17
17
struct interrupt_cnt_priv {
18
18
atomic_t count ;
19
- struct counter_device counter ;
20
19
struct gpio_desc * gpio ;
21
20
int irq ;
22
21
bool enabled ;
@@ -148,12 +147,14 @@ static const struct counter_ops interrupt_cnt_ops = {
148
147
static int interrupt_cnt_probe (struct platform_device * pdev )
149
148
{
150
149
struct device * dev = & pdev -> dev ;
150
+ struct counter_device * counter ;
151
151
struct interrupt_cnt_priv * priv ;
152
152
int ret ;
153
153
154
- priv = devm_kzalloc (dev , sizeof (* priv ), GFP_KERNEL );
155
- if (!priv )
154
+ counter = devm_counter_alloc (dev , sizeof (* priv ));
155
+ if (!counter )
156
156
return - ENOMEM ;
157
+ priv = counter_priv (counter );
157
158
158
159
priv -> irq = platform_get_irq_optional (pdev , 0 );
159
160
if (priv -> irq == - ENXIO )
@@ -184,8 +185,8 @@ static int interrupt_cnt_probe(struct platform_device *pdev)
184
185
if (!priv -> signals .name )
185
186
return - ENOMEM ;
186
187
187
- priv -> counter . signals = & priv -> signals ;
188
- priv -> counter . num_signals = 1 ;
188
+ counter -> signals = & priv -> signals ;
189
+ counter -> num_signals = 1 ;
189
190
190
191
priv -> synapses .actions_list = interrupt_cnt_synapse_actions ;
191
192
priv -> synapses .num_actions = ARRAY_SIZE (interrupt_cnt_synapse_actions );
@@ -199,12 +200,11 @@ static int interrupt_cnt_probe(struct platform_device *pdev)
199
200
priv -> cnts .ext = interrupt_cnt_ext ;
200
201
priv -> cnts .num_ext = ARRAY_SIZE (interrupt_cnt_ext );
201
202
202
- priv -> counter .priv = priv ;
203
- priv -> counter .name = dev_name (dev );
204
- priv -> counter .parent = dev ;
205
- priv -> counter .ops = & interrupt_cnt_ops ;
206
- priv -> counter .counts = & priv -> cnts ;
207
- priv -> counter .num_counts = 1 ;
203
+ counter -> name = dev_name (dev );
204
+ counter -> parent = dev ;
205
+ counter -> ops = & interrupt_cnt_ops ;
206
+ counter -> counts = & priv -> cnts ;
207
+ counter -> num_counts = 1 ;
208
208
209
209
irq_set_status_flags (priv -> irq , IRQ_NOAUTOEN );
210
210
ret = devm_request_irq (dev , priv -> irq , interrupt_cnt_isr ,
@@ -213,7 +213,11 @@ static int interrupt_cnt_probe(struct platform_device *pdev)
213
213
if (ret )
214
214
return ret ;
215
215
216
- return devm_counter_register (dev , & priv -> counter );
216
+ ret = devm_counter_add (dev , counter );
217
+ if (ret < 0 )
218
+ return dev_err_probe (dev , ret , "Failed to add counter\n" );
219
+
220
+ return 0 ;
217
221
}
218
222
219
223
static const struct of_device_id interrupt_cnt_of_match [] = {
0 commit comments