|
@@ -308,12 +308,20 @@ static const struct soc_device_attribute gen3_soc_whitelist[] = {
|
|
static int renesas_sdhi_internal_dmac_probe(struct platform_device *pdev)
|
|
static int renesas_sdhi_internal_dmac_probe(struct platform_device *pdev)
|
|
{
|
|
{
|
|
const struct soc_device_attribute *soc = soc_device_match(gen3_soc_whitelist);
|
|
const struct soc_device_attribute *soc = soc_device_match(gen3_soc_whitelist);
|
|
|
|
+ struct device *dev = &pdev->dev;
|
|
|
|
|
|
if (!soc)
|
|
if (!soc)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
global_flags |= (unsigned long)soc->data;
|
|
global_flags |= (unsigned long)soc->data;
|
|
|
|
|
|
|
|
+ dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms), GFP_KERNEL);
|
|
|
|
+ if (!dev->dma_parms)
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+
|
|
|
|
+ /* value is max of SD_SECCNT. Confirmed by HW engineers */
|
|
|
|
+ dma_set_max_seg_size(dev, 0xffffffff);
|
|
|
|
+
|
|
return renesas_sdhi_probe(pdev, &renesas_sdhi_internal_dmac_dma_ops);
|
|
return renesas_sdhi_probe(pdev, &renesas_sdhi_internal_dmac_dma_ops);
|
|
}
|
|
}
|
|
|
|
|