@@ -106,22 +106,24 @@ static int llcc_update_act_ctrl(u32 sid,
106
106
u32 slice_status ;
107
107
int ret ;
108
108
109
- act_ctrl_reg = drv_data -> bcast_off + LLCC_TRP_ACT_CTRLn (sid );
110
- status_reg = drv_data -> bcast_off + LLCC_TRP_STATUSn (sid );
109
+ act_ctrl_reg = LLCC_TRP_ACT_CTRLn (sid );
110
+ status_reg = LLCC_TRP_STATUSn (sid );
111
111
112
112
/* Set the ACTIVE trigger */
113
113
act_ctrl_reg_val |= ACT_CTRL_ACT_TRIG ;
114
- ret = regmap_write (drv_data -> regmap , act_ctrl_reg , act_ctrl_reg_val );
114
+ ret = regmap_write (drv_data -> bcast_regmap , act_ctrl_reg ,
115
+ act_ctrl_reg_val );
115
116
if (ret )
116
117
return ret ;
117
118
118
119
/* Clear the ACTIVE trigger */
119
120
act_ctrl_reg_val &= ~ACT_CTRL_ACT_TRIG ;
120
- ret = regmap_write (drv_data -> regmap , act_ctrl_reg , act_ctrl_reg_val );
121
+ ret = regmap_write (drv_data -> bcast_regmap , act_ctrl_reg ,
122
+ act_ctrl_reg_val );
121
123
if (ret )
122
124
return ret ;
123
125
124
- ret = regmap_read_poll_timeout (drv_data -> regmap , status_reg ,
126
+ ret = regmap_read_poll_timeout (drv_data -> bcast_regmap , status_reg ,
125
127
slice_status , !(slice_status & status ),
126
128
0 , LLCC_STATUS_READ_DELAY );
127
129
return ret ;
@@ -226,16 +228,13 @@ static int qcom_llcc_cfg_program(struct platform_device *pdev)
226
228
int ret ;
227
229
const struct llcc_slice_config * llcc_table ;
228
230
struct llcc_slice_desc desc ;
229
- u32 bcast_off = drv_data -> bcast_off ;
230
231
231
232
sz = drv_data -> cfg_size ;
232
233
llcc_table = drv_data -> cfg ;
233
234
234
235
for (i = 0 ; i < sz ; i ++ ) {
235
- attr1_cfg = bcast_off +
236
- LLCC_TRP_ATTR1_CFGn (llcc_table [i ].slice_id );
237
- attr0_cfg = bcast_off +
238
- LLCC_TRP_ATTR0_CFGn (llcc_table [i ].slice_id );
236
+ attr1_cfg = LLCC_TRP_ATTR1_CFGn (llcc_table [i ].slice_id );
237
+ attr0_cfg = LLCC_TRP_ATTR0_CFGn (llcc_table [i ].slice_id );
239
238
240
239
attr1_val = llcc_table [i ].cache_mode ;
241
240
attr1_val |= llcc_table [i ].probe_target_ways <<
@@ -260,10 +259,12 @@ static int qcom_llcc_cfg_program(struct platform_device *pdev)
260
259
attr0_val = llcc_table [i ].res_ways & ATTR0_RES_WAYS_MASK ;
261
260
attr0_val |= llcc_table [i ].bonus_ways << ATTR0_BONUS_WAYS_SHIFT ;
262
261
263
- ret = regmap_write (drv_data -> regmap , attr1_cfg , attr1_val );
262
+ ret = regmap_write (drv_data -> bcast_regmap , attr1_cfg ,
263
+ attr1_val );
264
264
if (ret )
265
265
return ret ;
266
- ret = regmap_write (drv_data -> regmap , attr0_cfg , attr0_val );
266
+ ret = regmap_write (drv_data -> bcast_regmap , attr0_cfg ,
267
+ attr0_val );
267
268
if (ret )
268
269
return ret ;
269
270
if (llcc_table [i ].activate_on_init ) {
@@ -279,24 +280,36 @@ int qcom_llcc_probe(struct platform_device *pdev,
279
280
{
280
281
u32 num_banks ;
281
282
struct device * dev = & pdev -> dev ;
282
- struct resource * res ;
283
- void __iomem * base ;
283
+ struct resource * llcc_banks_res , * llcc_bcast_res ;
284
+ void __iomem * llcc_banks_base , * llcc_bcast_base ;
284
285
int ret , i ;
285
286
286
287
drv_data = devm_kzalloc (dev , sizeof (* drv_data ), GFP_KERNEL );
287
288
if (!drv_data )
288
289
return - ENOMEM ;
289
290
290
- res = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
291
- base = devm_ioremap_resource (& pdev -> dev , res );
292
- if (IS_ERR (base ))
293
- return PTR_ERR (base );
291
+ llcc_banks_res = platform_get_resource_byname (pdev , IORESOURCE_MEM ,
292
+ "llcc_base" );
293
+ llcc_banks_base = devm_ioremap_resource (& pdev -> dev , llcc_banks_res );
294
+ if (IS_ERR (llcc_banks_base ))
295
+ return PTR_ERR (llcc_banks_base );
294
296
295
- drv_data -> regmap = devm_regmap_init_mmio (dev , base ,
296
- & llcc_regmap_config );
297
+ drv_data -> regmap = devm_regmap_init_mmio (dev , llcc_banks_base ,
298
+ & llcc_regmap_config );
297
299
if (IS_ERR (drv_data -> regmap ))
298
300
return PTR_ERR (drv_data -> regmap );
299
301
302
+ llcc_bcast_res = platform_get_resource_byname (pdev , IORESOURCE_MEM ,
303
+ "llcc_broadcast_base" );
304
+ llcc_bcast_base = devm_ioremap_resource (& pdev -> dev , llcc_bcast_res );
305
+ if (IS_ERR (llcc_bcast_base ))
306
+ return PTR_ERR (llcc_bcast_base );
307
+
308
+ drv_data -> bcast_regmap = devm_regmap_init_mmio (dev , llcc_bcast_base ,
309
+ & llcc_regmap_config );
310
+ if (IS_ERR (drv_data -> bcast_regmap ))
311
+ return PTR_ERR (drv_data -> bcast_regmap );
312
+
300
313
ret = regmap_read (drv_data -> regmap , LLCC_COMMON_STATUS0 ,
301
314
& num_banks );
302
315
if (ret )
@@ -318,8 +331,6 @@ int qcom_llcc_probe(struct platform_device *pdev,
318
331
for (i = 0 ; i < num_banks ; i ++ )
319
332
drv_data -> offsets [i ] = i * BANK_OFFSET_STRIDE ;
320
333
321
- drv_data -> bcast_off = num_banks * BANK_OFFSET_STRIDE ;
322
-
323
334
drv_data -> bitmap = devm_kcalloc (dev ,
324
335
BITS_TO_LONGS (drv_data -> max_slices ), sizeof (unsigned long ),
325
336
GFP_KERNEL );
0 commit comments