@@ -190,7 +190,7 @@ static void persistent_ram_ecc_old(struct persistent_ram_zone *prz)
190
190
}
191
191
192
192
static int persistent_ram_init_ecc (struct persistent_ram_zone * prz ,
193
- size_t buffer_size )
193
+ size_t buffer_size , struct persistent_ram * ram )
194
194
{
195
195
int numerr ;
196
196
struct persistent_ram_buffer * buffer = prz -> buffer ;
@@ -199,10 +199,10 @@ static int persistent_ram_init_ecc(struct persistent_ram_zone *prz,
199
199
if (!prz -> ecc )
200
200
return 0 ;
201
201
202
- prz -> ecc_block_size = 128 ;
203
- prz -> ecc_size = 16 ;
204
- prz -> ecc_symsize = 8 ;
205
- prz -> ecc_poly = 0x11d ;
202
+ prz -> ecc_block_size = ram -> ecc_block_size ?: 128 ;
203
+ prz -> ecc_size = ram -> ecc_size ?: 16 ;
204
+ prz -> ecc_symsize = ram -> ecc_symsize ?: 8 ;
205
+ prz -> ecc_poly = ram -> ecc_poly ?: 0x11d ;
206
206
207
207
ecc_blocks = DIV_ROUND_UP (prz -> buffer_size - prz -> ecc_size ,
208
208
prz -> ecc_block_size + prz -> ecc_size );
@@ -375,7 +375,7 @@ static int persistent_ram_buffer_map(phys_addr_t start, phys_addr_t size,
375
375
}
376
376
377
377
static int __devinit persistent_ram_buffer_init (const char * name ,
378
- struct persistent_ram_zone * prz )
378
+ struct persistent_ram_zone * prz , struct persistent_ram * * ramp )
379
379
{
380
380
int i ;
381
381
struct persistent_ram * ram ;
@@ -386,9 +386,11 @@ static int __devinit persistent_ram_buffer_init(const char *name,
386
386
start = ram -> start ;
387
387
for (i = 0 ; i < ram -> num_descs ; i ++ ) {
388
388
desc = & ram -> descs [i ];
389
- if (!strcmp (desc -> name , name ))
389
+ if (!strcmp (desc -> name , name )) {
390
+ * ramp = ram ;
390
391
return persistent_ram_buffer_map (start ,
391
392
desc -> size , prz );
393
+ }
392
394
start += desc -> size ;
393
395
}
394
396
}
@@ -399,6 +401,7 @@ static int __devinit persistent_ram_buffer_init(const char *name,
399
401
static __devinit
400
402
struct persistent_ram_zone * __persistent_ram_init (struct device * dev , bool ecc )
401
403
{
404
+ struct persistent_ram * ram ;
402
405
struct persistent_ram_zone * prz ;
403
406
int ret = - ENOMEM ;
404
407
@@ -410,14 +413,14 @@ struct persistent_ram_zone *__persistent_ram_init(struct device *dev, bool ecc)
410
413
411
414
INIT_LIST_HEAD (& prz -> node );
412
415
413
- ret = persistent_ram_buffer_init (dev_name (dev ), prz );
416
+ ret = persistent_ram_buffer_init (dev_name (dev ), prz , & ram );
414
417
if (ret ) {
415
418
pr_err ("persistent_ram: failed to initialize buffer\n" );
416
419
goto err ;
417
420
}
418
421
419
422
prz -> ecc = ecc ;
420
- ret = persistent_ram_init_ecc (prz , prz -> buffer_size );
423
+ ret = persistent_ram_init_ecc (prz , prz -> buffer_size , ram );
421
424
if (ret )
422
425
goto err ;
423
426
0 commit comments