|
@@ -18,8 +18,10 @@
|
|
#include <linux/mmc/host.h>
|
|
#include <linux/mmc/host.h>
|
|
#include <linux/mod_devicetable.h>
|
|
#include <linux/mod_devicetable.h>
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
|
|
+#include <linux/of_device.h>
|
|
#include <linux/pagemap.h>
|
|
#include <linux/pagemap.h>
|
|
#include <linux/scatterlist.h>
|
|
#include <linux/scatterlist.h>
|
|
|
|
+#include <linux/sys_soc.h>
|
|
|
|
|
|
#include "renesas_sdhi.h"
|
|
#include "renesas_sdhi.h"
|
|
#include "tmio_mmc.h"
|
|
#include "tmio_mmc.h"
|
|
@@ -459,8 +461,21 @@ static const struct tmio_mmc_dma_ops renesas_sdhi_sys_dmac_dma_ops = {
|
|
.dataend = renesas_sdhi_sys_dmac_dataend_dma,
|
|
.dataend = renesas_sdhi_sys_dmac_dataend_dma,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Whitelist of specific R-Car Gen3 SoC ES versions to use this DMAC
|
|
|
|
+ * implementation. Currently empty as all supported ES versions use
|
|
|
|
+ * the internal DMAC.
|
|
|
|
+ */
|
|
|
|
+static const struct soc_device_attribute gen3_soc_whitelist[] = {
|
|
|
|
+ { /* sentinel */ }
|
|
|
|
+};
|
|
|
|
+
|
|
static int renesas_sdhi_sys_dmac_probe(struct platform_device *pdev)
|
|
static int renesas_sdhi_sys_dmac_probe(struct platform_device *pdev)
|
|
{
|
|
{
|
|
|
|
+ if (of_device_get_match_data(&pdev->dev) == &of_rcar_gen3_compatible &&
|
|
|
|
+ !soc_device_match(gen3_soc_whitelist))
|
|
|
|
+ return -ENODEV;
|
|
|
|
+
|
|
return renesas_sdhi_probe(pdev, &renesas_sdhi_sys_dmac_dma_ops);
|
|
return renesas_sdhi_probe(pdev, &renesas_sdhi_sys_dmac_dma_ops);
|
|
}
|
|
}
|
|
|
|
|