Add missing directions, residue_granularity, srd_addr_widths and dst_addr_widths bitfields. Without those we will see a kernel WARN() when loading musb on am335x devices.
Unified · Split
| @@ -903,6 +903,11 @@ static const struct cppi_glue_infos *get_glue_info(struct device *dev) · 902 unmodified lines | ||
| 903 | 903 | return of_id->data; |
| 904 | 904 | } |
| 905 | 905 | |
| 906 | +#define CPPI41_DMA_BUSWIDTHS (BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \ | |
| 907 | + BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \ | |
| 908 | + BIT(DMA_SLAVE_BUSWIDTH_3_BYTES) | \ | |
| 909 | + BIT(DMA_SLAVE_BUSWIDTH_4_BYTES)) | |
| 910 | + | |
| 906 | 911 | static int cppi41_dma_probe(struct platform_device *pdev) |
| 907 | 912 | { |
| 908 | 913 | struct cppi41_dd *cdd; |
| @@ -926,6 +931,10 @@ static int cppi41_dma_probe(struct platform_device *pdev) · 17 unmodified lines | ||
| 926 | 931 | cdd->ddev.device_issue_pending = cppi41_dma_issue_pending; |
| 927 | 932 | cdd->ddev.device_prep_slave_sg = cppi41_dma_prep_slave_sg; |
| 928 | 933 | cdd->ddev.device_terminate_all = cppi41_stop_chan; |
| 934 | + cdd->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); | |
| 935 | + cdd->ddev.src_addr_widths = CPPI41_DMA_BUSWIDTHS; | |
| 936 | + cdd->ddev.dst_addr_widths = CPPI41_DMA_BUSWIDTHS; | |
| 937 | + cdd->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; | |
| 929 | 938 | cdd->ddev.dev = dev; |
| 930 | 939 | INIT_LIST_HEAD(&cdd->ddev.channels); |
| 931 | 940 | cpp41_dma_info.dma_cap = cdd->ddev.cap_mask; |