@@ -1226,6 +1226,8 @@ static int fsldma_of_probe(struct platform_device *op)
1226
1226
1227
1227
fdev -> dev = & op -> dev ;
1228
1228
INIT_LIST_HEAD (& fdev -> common .channels );
1229
+ /* The DMA address bits supported for this device. */
1230
+ fdev -> addr_bits = (long )device_get_match_data (fdev -> dev );
1229
1231
1230
1232
/* ioremap the registers for use */
1231
1233
fdev -> regs = of_iomap (op -> dev .of_node , 0 );
@@ -1254,7 +1256,7 @@ static int fsldma_of_probe(struct platform_device *op)
1254
1256
fdev -> common .directions = BIT (DMA_DEV_TO_MEM ) | BIT (DMA_MEM_TO_DEV );
1255
1257
fdev -> common .residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR ;
1256
1258
1257
- dma_set_mask (& (op -> dev ), DMA_BIT_MASK (36 ));
1259
+ dma_set_mask (& (op -> dev ), DMA_BIT_MASK (fdev -> addr_bits ));
1258
1260
1259
1261
platform_set_drvdata (op , fdev );
1260
1262
@@ -1387,10 +1389,20 @@ static const struct dev_pm_ops fsldma_pm_ops = {
1387
1389
};
1388
1390
#endif
1389
1391
1392
+ /* The .data field is used for dma-bit-mask. */
1390
1393
static const struct of_device_id fsldma_of_ids [] = {
1391
- { .compatible = "fsl,elo3-dma" , },
1392
- { .compatible = "fsl,eloplus-dma" , },
1393
- { .compatible = "fsl,elo-dma" , },
1394
+ {
1395
+ .compatible = "fsl,elo3-dma" ,
1396
+ .data = (void * )40 ,
1397
+ },
1398
+ {
1399
+ .compatible = "fsl,eloplus-dma" ,
1400
+ .data = (void * )36 ,
1401
+ },
1402
+ {
1403
+ .compatible = "fsl,elo-dma" ,
1404
+ .data = (void * )32 ,
1405
+ },
1394
1406
{}
1395
1407
};
1396
1408
MODULE_DEVICE_TABLE (of , fsldma_of_ids );
0 commit comments