aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/ccp/ccp-platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/crypto/ccp/ccp-platform.c')
-rw-r--r--drivers/crypto/ccp/ccp-platform.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/crypto/ccp/ccp-platform.c b/drivers/crypto/ccp/ccp-platform.c
index 8b923b7e9389..01b50cb4c982 100644
--- a/drivers/crypto/ccp/ccp-platform.c
+++ b/drivers/crypto/ccp/ccp-platform.c
@@ -94,6 +94,7 @@ static int ccp_platform_probe(struct platform_device *pdev)
94 struct ccp_device *ccp; 94 struct ccp_device *ccp;
95 struct ccp_platform *ccp_platform; 95 struct ccp_platform *ccp_platform;
96 struct device *dev = &pdev->dev; 96 struct device *dev = &pdev->dev;
97 enum dev_dma_attr attr;
97 struct resource *ior; 98 struct resource *ior;
98 int ret; 99 int ret;
99 100
@@ -118,18 +119,24 @@ static int ccp_platform_probe(struct platform_device *pdev)
118 } 119 }
119 ccp->io_regs = ccp->io_map; 120 ccp->io_regs = ccp->io_map;
120 121
121 ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(48)); 122 attr = device_get_dma_attr(dev);
122 if (ret) { 123 if (attr == DEV_DMA_NOT_SUPPORTED) {
123 dev_err(dev, "dma_set_mask_and_coherent failed (%d)\n", ret); 124 dev_err(dev, "DMA is not supported");
124 goto e_err; 125 goto e_err;
125 } 126 }
126 127
127 ccp_platform->coherent = device_dma_is_coherent(ccp->dev); 128 ccp_platform->coherent = (attr == DEV_DMA_COHERENT);
128 if (ccp_platform->coherent) 129 if (ccp_platform->coherent)
129 ccp->axcache = CACHE_WB_NO_ALLOC; 130 ccp->axcache = CACHE_WB_NO_ALLOC;
130 else 131 else
131 ccp->axcache = CACHE_NONE; 132 ccp->axcache = CACHE_NONE;
132 133
134 ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(48));
135 if (ret) {
136 dev_err(dev, "dma_set_mask_and_coherent failed (%d)\n", ret);
137 goto e_err;
138 }
139
133 dev_set_drvdata(dev, ccp); 140 dev_set_drvdata(dev, ccp);
134 141
135 ret = ccp_init(ccp); 142 ret = ccp_init(ccp);