@@ -396,8 +396,8 @@ static unsigned long bcm2835_measure_tcnt_mux(struct bcm2835_cprman *cprman,
396
396
}
397
397
398
398
static void bcm2835_debugfs_regset (struct bcm2835_cprman * cprman , u32 base ,
399
- struct debugfs_reg32 * regs , size_t nregs ,
400
- struct dentry * dentry )
399
+ const struct debugfs_reg32 * regs ,
400
+ size_t nregs , struct dentry * dentry )
401
401
{
402
402
struct debugfs_regset32 * regset ;
403
403
@@ -1240,7 +1240,7 @@ static u8 bcm2835_clock_get_parent(struct clk_hw *hw)
1240
1240
return (src & CM_SRC_MASK ) >> CM_SRC_SHIFT ;
1241
1241
}
1242
1242
1243
- static struct debugfs_reg32 bcm2835_debugfs_clock_reg32 [] = {
1243
+ static const struct debugfs_reg32 bcm2835_debugfs_clock_reg32 [] = {
1244
1244
{
1245
1245
.name = "ctl" ,
1246
1246
.offset = 0 ,
@@ -1296,8 +1296,9 @@ static const struct clk_ops bcm2835_vpu_clock_clk_ops = {
1296
1296
};
1297
1297
1298
1298
static struct clk_hw * bcm2835_register_pll (struct bcm2835_cprman * cprman ,
1299
- const struct bcm2835_pll_data * data )
1299
+ const void * data )
1300
1300
{
1301
+ const struct bcm2835_pll_data * pll_data = data ;
1301
1302
struct bcm2835_pll * pll ;
1302
1303
struct clk_init_data init ;
1303
1304
int ret ;
@@ -1307,7 +1308,7 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
1307
1308
/* All of the PLLs derive from the external oscillator. */
1308
1309
init .parent_names = & cprman -> real_parent_names [0 ];
1309
1310
init .num_parents = 1 ;
1310
- init .name = data -> name ;
1311
+ init .name = pll_data -> name ;
1311
1312
init .ops = & bcm2835_pll_clk_ops ;
1312
1313
init .flags = CLK_IGNORE_UNUSED ;
1313
1314
@@ -1316,7 +1317,7 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
1316
1317
return NULL ;
1317
1318
1318
1319
pll -> cprman = cprman ;
1319
- pll -> data = data ;
1320
+ pll -> data = pll_data ;
1320
1321
pll -> hw .init = & init ;
1321
1322
1322
1323
ret = devm_clk_hw_register (cprman -> dev , & pll -> hw );
@@ -1327,35 +1328,36 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
1327
1328
1328
1329
static struct clk_hw *
1329
1330
bcm2835_register_pll_divider (struct bcm2835_cprman * cprman ,
1330
- const struct bcm2835_pll_divider_data * data )
1331
+ const void * data )
1331
1332
{
1333
+ const struct bcm2835_pll_divider_data * divider_data = data ;
1332
1334
struct bcm2835_pll_divider * divider ;
1333
1335
struct clk_init_data init ;
1334
1336
const char * divider_name ;
1335
1337
int ret ;
1336
1338
1337
- if (data -> fixed_divider != 1 ) {
1339
+ if (divider_data -> fixed_divider != 1 ) {
1338
1340
divider_name = devm_kasprintf (cprman -> dev , GFP_KERNEL ,
1339
- "%s_prediv" , data -> name );
1341
+ "%s_prediv" , divider_data -> name );
1340
1342
if (!divider_name )
1341
1343
return NULL ;
1342
1344
} else {
1343
- divider_name = data -> name ;
1345
+ divider_name = divider_data -> name ;
1344
1346
}
1345
1347
1346
1348
memset (& init , 0 , sizeof (init ));
1347
1349
1348
- init .parent_names = & data -> source_pll ;
1350
+ init .parent_names = & divider_data -> source_pll ;
1349
1351
init .num_parents = 1 ;
1350
1352
init .name = divider_name ;
1351
1353
init .ops = & bcm2835_pll_divider_clk_ops ;
1352
- init .flags = data -> flags | CLK_IGNORE_UNUSED ;
1354
+ init .flags = divider_data -> flags | CLK_IGNORE_UNUSED ;
1353
1355
1354
1356
divider = devm_kzalloc (cprman -> dev , sizeof (* divider ), GFP_KERNEL );
1355
1357
if (!divider )
1356
1358
return NULL ;
1357
1359
1358
- divider -> div .reg = cprman -> regs + data -> a2w_reg ;
1360
+ divider -> div .reg = cprman -> regs + divider_data -> a2w_reg ;
1359
1361
divider -> div .shift = A2W_PLL_DIV_SHIFT ;
1360
1362
divider -> div .width = A2W_PLL_DIV_BITS ;
1361
1363
divider -> div .flags = CLK_DIVIDER_MAX_AT_ZERO ;
@@ -1364,7 +1366,7 @@ bcm2835_register_pll_divider(struct bcm2835_cprman *cprman,
1364
1366
divider -> div .table = NULL ;
1365
1367
1366
1368
divider -> cprman = cprman ;
1367
- divider -> data = data ;
1369
+ divider -> data = divider_data ;
1368
1370
1369
1371
ret = devm_clk_hw_register (cprman -> dev , & divider -> div .hw );
1370
1372
if (ret )
@@ -1374,20 +1376,22 @@ bcm2835_register_pll_divider(struct bcm2835_cprman *cprman,
1374
1376
* PLLH's channels have a fixed divide by 10 afterwards, which
1375
1377
* is what our consumers are actually using.
1376
1378
*/
1377
- if (data -> fixed_divider != 1 ) {
1378
- return clk_hw_register_fixed_factor (cprman -> dev , data -> name ,
1379
+ if (divider_data -> fixed_divider != 1 ) {
1380
+ return clk_hw_register_fixed_factor (cprman -> dev ,
1381
+ divider_data -> name ,
1379
1382
divider_name ,
1380
1383
CLK_SET_RATE_PARENT ,
1381
1384
1 ,
1382
- data -> fixed_divider );
1385
+ divider_data -> fixed_divider );
1383
1386
}
1384
1387
1385
1388
return & divider -> div .hw ;
1386
1389
}
1387
1390
1388
1391
static struct clk_hw * bcm2835_register_clock (struct bcm2835_cprman * cprman ,
1389
- const struct bcm2835_clock_data * data )
1392
+ const void * data )
1390
1393
{
1394
+ const struct bcm2835_clock_data * clock_data = data ;
1391
1395
struct bcm2835_clock * clock ;
1392
1396
struct clk_init_data init ;
1393
1397
const char * parents [1 << CM_SRC_BITS ];
@@ -1398,8 +1402,8 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
1398
1402
* Replace our strings referencing parent clocks with the
1399
1403
* actual clock-output-name of the parent.
1400
1404
*/
1401
- for (i = 0 ; i < data -> num_mux_parents ; i ++ ) {
1402
- parents [i ] = data -> parents [i ];
1405
+ for (i = 0 ; i < clock_data -> num_mux_parents ; i ++ ) {
1406
+ parents [i ] = clock_data -> parents [i ];
1403
1407
1404
1408
ret = match_string (cprman_parent_names ,
1405
1409
ARRAY_SIZE (cprman_parent_names ),
@@ -1410,18 +1414,18 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
1410
1414
1411
1415
memset (& init , 0 , sizeof (init ));
1412
1416
init .parent_names = parents ;
1413
- init .num_parents = data -> num_mux_parents ;
1414
- init .name = data -> name ;
1415
- init .flags = data -> flags | CLK_IGNORE_UNUSED ;
1417
+ init .num_parents = clock_data -> num_mux_parents ;
1418
+ init .name = clock_data -> name ;
1419
+ init .flags = clock_data -> flags | CLK_IGNORE_UNUSED ;
1416
1420
1417
1421
/*
1418
1422
* Pass the CLK_SET_RATE_PARENT flag if we are allowed to propagate
1419
1423
* rate changes on at least of the parents.
1420
1424
*/
1421
- if (data -> set_rate_parent )
1425
+ if (clock_data -> set_rate_parent )
1422
1426
init .flags |= CLK_SET_RATE_PARENT ;
1423
1427
1424
- if (data -> is_vpu_clock ) {
1428
+ if (clock_data -> is_vpu_clock ) {
1425
1429
init .ops = & bcm2835_vpu_clock_clk_ops ;
1426
1430
} else {
1427
1431
init .ops = & bcm2835_clock_clk_ops ;
@@ -1430,7 +1434,7 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
1430
1434
/* If the clock wasn't actually enabled at boot, it's not
1431
1435
* critical.
1432
1436
*/
1433
- if (!(cprman_read (cprman , data -> ctl_reg ) & CM_ENABLE ))
1437
+ if (!(cprman_read (cprman , clock_data -> ctl_reg ) & CM_ENABLE ))
1434
1438
init .flags &= ~CLK_IS_CRITICAL ;
1435
1439
}
1436
1440
@@ -1439,7 +1443,7 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
1439
1443
return NULL ;
1440
1444
1441
1445
clock -> cprman = cprman ;
1442
- clock -> data = data ;
1446
+ clock -> data = clock_data ;
1443
1447
clock -> hw .init = & init ;
1444
1448
1445
1449
ret = devm_clk_hw_register (cprman -> dev , & clock -> hw );
@@ -1448,25 +1452,27 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
1448
1452
return & clock -> hw ;
1449
1453
}
1450
1454
1451
- static struct clk * bcm2835_register_gate (struct bcm2835_cprman * cprman ,
1452
- const struct bcm2835_gate_data * data )
1455
+ static struct clk_hw * bcm2835_register_gate (struct bcm2835_cprman * cprman ,
1456
+ const void * data )
1453
1457
{
1454
- return clk_register_gate (cprman -> dev , data -> name , data -> parent ,
1455
- CLK_IGNORE_UNUSED | CLK_SET_RATE_GATE ,
1456
- cprman -> regs + data -> ctl_reg ,
1457
- CM_GATE_BIT , 0 , & cprman -> regs_lock );
1458
+ const struct bcm2835_gate_data * gate_data = data ;
1459
+
1460
+ return clk_hw_register_gate (cprman -> dev , gate_data -> name ,
1461
+ gate_data -> parent ,
1462
+ CLK_IGNORE_UNUSED | CLK_SET_RATE_GATE ,
1463
+ cprman -> regs + gate_data -> ctl_reg ,
1464
+ CM_GATE_BIT , 0 , & cprman -> regs_lock );
1458
1465
}
1459
1466
1460
- typedef struct clk_hw * (* bcm2835_clk_register )(struct bcm2835_cprman * cprman ,
1461
- const void * data );
1462
1467
struct bcm2835_clk_desc {
1463
- bcm2835_clk_register clk_register ;
1468
+ struct clk_hw * (* clk_register )(struct bcm2835_cprman * cprman ,
1469
+ const void * data );
1464
1470
unsigned int supported ;
1465
1471
const void * data ;
1466
1472
};
1467
1473
1468
1474
/* assignment helper macros for different clock types */
1469
- #define _REGISTER (f , s , ...) { .clk_register = (bcm2835_clk_register) f, \
1475
+ #define _REGISTER (f , s , ...) { .clk_register = f, \
1470
1476
.supported = s, \
1471
1477
.data = __VA_ARGS__ }
1472
1478
#define REGISTER_PLL (s , ...) _REGISTER(&bcm2835_register_pll, \
0 commit comments