@@ -115,10 +115,9 @@ struct sc5xx_gptimer_controller {
115
115
struct clockevent_gptimer * cevt ;
116
116
struct sc5xx_gptimer * timers ;
117
117
size_t num_timers ;
118
- struct counter_device counter_dev ;
119
118
};
120
119
121
- static struct sc5xx_gptimer_controller gptimer_controller = { 0 };
120
+ static struct sc5xx_gptimer_controller gptimer_controller = { 0x00 };
122
121
123
122
static struct clockevent_gptimer * to_clockevent_gptimer (struct
124
123
clock_event_device
@@ -430,25 +429,30 @@ static int __init sc5xx_gptimer_controller_init(struct device_node *np)
430
429
int ret ;
431
430
int i , n ;
432
431
432
+ printk (KERN_ERR " sc5xx_gptimer_controller_init %d\n" ,__LINE__ );
433
+
433
434
if (gptimer_controller .base ) {
434
435
pr_err
435
436
("%s: Tried to initialize a second gptimer controller; check your device tree\n" ,
436
437
__func__ );
437
438
return - EINVAL ;
438
439
}
440
+ printk (KERN_ERR " sc5xx_gptimer_controller_init %d\n" ,__LINE__ );
439
441
440
442
base = of_iomap (np , 0 );
441
443
if (!base ) {
442
444
pr_err ("%s: Unable to map gptimer registers\n" , __func__ );
443
445
return - ENODEV ;
444
446
}
447
+ printk (KERN_ERR " sc5xx_gptimer_controller_init %d\n" ,__LINE__ );
445
448
446
449
clk = of_clk_get (np , 0 );
447
450
if (IS_ERR (clk )) {
448
451
pr_err ("%s: could not find sclk0_0 = %ld\n" , __func__ ,
449
452
PTR_ERR (clk ));
450
453
return PTR_ERR (clk );
451
454
}
455
+ printk (KERN_ERR " sc5xx_gptimer_controller_init %d\n" ,__LINE__ );
452
456
453
457
ret = clk_prepare_enable (clk );
454
458
if (ret ) {
@@ -463,8 +467,9 @@ static int __init sc5xx_gptimer_controller_init(struct device_node *np)
463
467
n = of_get_child_count (np );
464
468
gptimer_controller .num_timers = n ;
465
469
gptimer_controller .timers =
466
- kcalloc (n , sizeof (* gptimer_controller .timers ), GFP_KERNEL );
470
+ kcalloc (n , sizeof (* gptimer_controller .timers ), GFP_KERNEL );
467
471
472
+ printk (KERN_ERR " sc5xx_gptimer_controller_init %d\n" ,__LINE__ );
468
473
if (!gptimer_controller .timers ) {
469
474
pr_err ("%s: Unable to allocate memory for timers\n" ,
470
475
__func__ );
@@ -476,6 +481,7 @@ static int __init sc5xx_gptimer_controller_init(struct device_node *np)
476
481
ret =
477
482
sc5xx_gptimer_init (timer_np ,
478
483
& gptimer_controller .timers [i ]);
484
+ printk (KERN_ERR " sc5xx_gptimer_controller_init %d\n" ,__LINE__ );
479
485
if (ret ) {
480
486
of_node_put (timer_np );
481
487
return ret ;
@@ -493,35 +499,48 @@ TIMER_OF_DECLARE(sc5xx_gptimers, "adi,sc5xx-gptimers",
493
499
static int gptimer_counter_probe (struct platform_device * pdev )
494
500
{
495
501
struct device * dev = & pdev -> dev ;
496
- struct counter_count * counts ;
502
+ struct counter_count * adi_counts ;
503
+ struct sc5xx_gptimer_controller * priv ;
504
+ struct counter_device * counter ;
497
505
uint32_t i ;
506
+ int ret ;
498
507
499
- if (!gptimer_controller .base ) {
500
- dev_err (dev , "gptimer controller not yet mapped?\n" );
501
- return - ENODEV ;
508
+ adi_counts =
509
+ devm_kcalloc (dev , gptimer_controller .num_timers ,
510
+ sizeof (* adi_counts ), GFP_KERNEL );
511
+ if (!adi_counts ) {
512
+ return - ENOMEM ;
502
513
}
503
514
504
- counts =
505
- devm_kcalloc (dev , gptimer_controller .num_timers ,
506
- sizeof (* counts ), GFP_KERNEL );
507
- if (!counts )
515
+
516
+ counter = devm_counter_alloc (dev , sizeof (* priv ));
517
+ if (!counter )
508
518
return - ENOMEM ;
509
519
520
+ priv = counter_priv (counter );
521
+
522
+
510
523
for (i = 0 ; i < gptimer_controller .num_timers ; ++ i ) {
511
- counts [i ].id = i ;
512
- counts [i ].name =
524
+ adi_counts [i ].name =
513
525
kasprintf (GFP_KERNEL , "gptimer_counter%d" , i );
514
526
}
515
527
516
- gptimer_controller .counter_dev .name = dev_name (dev );
517
- gptimer_controller .counter_dev .parent = dev ;
518
- gptimer_controller .counter_dev .ops = & gptimer_counter_ops ;
519
- gptimer_controller .counter_dev .counts = counts ;
520
- gptimer_controller .counter_dev .num_counts =
521
- gptimer_controller .num_timers ;
528
+ priv -> clk = gptimer_controller .clk ;
529
+
530
+ counter -> name = dev_name (dev );
531
+ counter -> parent = dev ;
532
+ counter -> ops = & gptimer_counter_ops ;
533
+ counter -> counts = adi_counts ;
534
+ counter -> num_counts = gptimer_controller .num_timers ;
535
+
536
+ /* Register Counter device */
537
+ ret = devm_counter_add (dev , counter );
538
+ if (ret < 0 ) {
539
+ dev_err_probe (dev , ret , "Failed to add counter\n" );
540
+ }
541
+ return ret ;
522
542
523
- //changed from devm_counter_register
524
- return devm_counter_add (dev , & gptimer_controller .counter_dev );
543
+
525
544
}
526
545
527
546
static const struct of_device_id adsp_gptimer_counter_match [] = {
0 commit comments