DMA-API: usb: use dma_set_coherent_mask()
The correct way for a driver to specify the coherent DMA mask is not to directly access the field in the struct device, but to use dma_set_coherent_mask(). Only arch and bus code should access this member directly. Convert all direct write accesses to using the correct API. Acked-by: Felipe Balbi <balbi@ti.com> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
		
					parent
					
						
							
								93b11b2584
							
						
					
				
			
			
				commit
				
					
						22d9d8e831
					
				
			
		
					 19 changed files with 64 additions and 38 deletions
				
			
		|  | @ -123,8 +123,9 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) | ||||||
| 
 | 
 | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (ret) | ||||||
|  | 		goto err_clk; | ||||||
| 
 | 
 | ||||||
| 	if (data->usbmisc_data) { | 	if (data->usbmisc_data) { | ||||||
| 		ret = imx_usbmisc_init(data->usbmisc_data); | 		ret = imx_usbmisc_init(data->usbmisc_data); | ||||||
|  |  | ||||||
|  | @ -121,8 +121,9 @@ static int dwc3_exynos_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!dev->dma_mask) | 	if (!dev->dma_mask) | ||||||
| 		dev->dma_mask = &dev->coherent_dma_mask; | 		dev->dma_mask = &dev->coherent_dma_mask; | ||||||
| 	if (!dev->coherent_dma_mask) | 	ret = dma_set_coherent_mask(dev, DMA_BIT_MASK(32)); | ||||||
| 		dev->coherent_dma_mask = DMA_BIT_MASK(32); | 	if (ret) | ||||||
|  | 		goto err1; | ||||||
| 
 | 
 | ||||||
| 	platform_set_drvdata(pdev, exynos); | 	platform_set_drvdata(pdev, exynos); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3078,7 +3078,9 @@ static int __init lpc32xx_udc_probe(struct platform_device *pdev) | ||||||
| 		 udc->isp1301_i2c_client->addr); | 		 udc->isp1301_i2c_client->addr); | ||||||
| 
 | 
 | ||||||
| 	pdev->dev.dma_mask = &lpc32xx_usbd_dmamask; | 	pdev->dev.dma_mask = &lpc32xx_usbd_dmamask; | ||||||
| 	pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	retval = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
|  | 	if (retval) | ||||||
|  | 		goto resource_fail; | ||||||
| 
 | 
 | ||||||
| 	udc->board = &lpc32xx_usbddata; | 	udc->board = &lpc32xx_usbddata; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -92,8 +92,9 @@ static int ehci_atmel_drv_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	retval = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (retval) | ||||||
|  | 		goto fail_create_hcd; | ||||||
| 
 | 
 | ||||||
| 	hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); | 	hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); | ||||||
| 	if (!hcd) { | 	if (!hcd) { | ||||||
|  |  | ||||||
|  | @ -116,8 +116,10 @@ static int ehci_octeon_drv_probe(struct platform_device *pdev) | ||||||
| 	 * We can DMA from anywhere. But the descriptors must be in | 	 * We can DMA from anywhere. But the descriptors must be in | ||||||
| 	 * the lower 4GB. | 	 * the lower 4GB. | ||||||
| 	 */ | 	 */ | ||||||
| 	pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); |  | ||||||
| 	pdev->dev.dma_mask = &ehci_octeon_dma_mask; | 	pdev->dev.dma_mask = &ehci_octeon_dma_mask; | ||||||
|  | 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
|  | 	if (ret) | ||||||
|  | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	hcd = usb_create_hcd(&ehci_octeon_hc_driver, &pdev->dev, "octeon"); | 	hcd = usb_create_hcd(&ehci_octeon_hc_driver, &pdev->dev, "octeon"); | ||||||
| 	if (!hcd) | 	if (!hcd) | ||||||
|  |  | ||||||
|  | @ -104,7 +104,7 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev) | ||||||
| 	struct resource	*res; | 	struct resource	*res; | ||||||
| 	struct usb_hcd	*hcd; | 	struct usb_hcd	*hcd; | ||||||
| 	void __iomem *regs; | 	void __iomem *regs; | ||||||
| 	int ret = -ENODEV; | 	int ret; | ||||||
| 	int irq; | 	int irq; | ||||||
| 	int i; | 	int i; | ||||||
| 	struct omap_hcd	*omap; | 	struct omap_hcd	*omap; | ||||||
|  | @ -146,9 +146,11 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!dev->dma_mask) | 	if (!dev->dma_mask) | ||||||
| 		dev->dma_mask = &dev->coherent_dma_mask; | 		dev->dma_mask = &dev->coherent_dma_mask; | ||||||
| 	if (!dev->coherent_dma_mask) | 	ret = dma_set_coherent_mask(dev, DMA_BIT_MASK(32)); | ||||||
| 		dev->coherent_dma_mask = DMA_BIT_MASK(32); | 	if (ret) | ||||||
|  | 		return ret; | ||||||
| 
 | 
 | ||||||
|  | 	ret = -ENODEV; | ||||||
| 	hcd = usb_create_hcd(&ehci_omap_hc_driver, dev, | 	hcd = usb_create_hcd(&ehci_omap_hc_driver, dev, | ||||||
| 			dev_name(dev)); | 			dev_name(dev)); | ||||||
| 	if (!hcd) { | 	if (!hcd) { | ||||||
|  |  | ||||||
|  | @ -182,8 +182,9 @@ static int ehci_orion_drv_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (err) | ||||||
|  | 		goto err1; | ||||||
| 
 | 
 | ||||||
| 	if (!request_mem_region(res->start, resource_size(res), | 	if (!request_mem_region(res->start, resource_size(res), | ||||||
| 				ehci_orion_hc_driver.description)) { | 				ehci_orion_hc_driver.description)) { | ||||||
|  |  | ||||||
|  | @ -78,7 +78,7 @@ static int ehci_platform_probe(struct platform_device *dev) | ||||||
| 	struct resource *res_mem; | 	struct resource *res_mem; | ||||||
| 	struct usb_ehci_pdata *pdata; | 	struct usb_ehci_pdata *pdata; | ||||||
| 	int irq; | 	int irq; | ||||||
| 	int err = -ENOMEM; | 	int err; | ||||||
| 
 | 
 | ||||||
| 	if (usb_disabled()) | 	if (usb_disabled()) | ||||||
| 		return -ENODEV; | 		return -ENODEV; | ||||||
|  | @ -91,8 +91,9 @@ static int ehci_platform_probe(struct platform_device *dev) | ||||||
| 		dev->dev.platform_data = &ehci_platform_defaults; | 		dev->dev.platform_data = &ehci_platform_defaults; | ||||||
| 	if (!dev->dev.dma_mask) | 	if (!dev->dev.dma_mask) | ||||||
| 		dev->dev.dma_mask = &dev->dev.coherent_dma_mask; | 		dev->dev.dma_mask = &dev->dev.coherent_dma_mask; | ||||||
| 	if (!dev->dev.coherent_dma_mask) | 	err = dma_set_coherent_mask(&dev->dev, DMA_BIT_MASK(32)); | ||||||
| 		dev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (err) | ||||||
|  | 		return err; | ||||||
| 
 | 
 | ||||||
| 	pdata = dev_get_platdata(&dev->dev); | 	pdata = dev_get_platdata(&dev->dev); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -91,8 +91,9 @@ static int s5p_ehci_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (err) | ||||||
|  | 		return err; | ||||||
| 
 | 
 | ||||||
| 	s5p_setup_vbus_gpio(pdev); | 	s5p_setup_vbus_gpio(pdev); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -83,8 +83,9 @@ static int spear_ehci_hcd_drv_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	retval = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (retval) | ||||||
|  | 		goto fail; | ||||||
| 
 | 
 | ||||||
| 	usbh_clk = devm_clk_get(&pdev->dev, NULL); | 	usbh_clk = devm_clk_get(&pdev->dev, NULL); | ||||||
| 	if (IS_ERR(usbh_clk)) { | 	if (IS_ERR(usbh_clk)) { | ||||||
|  |  | ||||||
|  | @ -364,8 +364,9 @@ static int tegra_ehci_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (err) | ||||||
|  | 		return err; | ||||||
| 
 | 
 | ||||||
| 	hcd = usb_create_hcd(&tegra_ehci_hc_driver, &pdev->dev, | 	hcd = usb_create_hcd(&tegra_ehci_hc_driver, &pdev->dev, | ||||||
| 					dev_name(&pdev->dev)); | 					dev_name(&pdev->dev)); | ||||||
|  |  | ||||||
|  | @ -524,7 +524,7 @@ MODULE_DEVICE_TABLE(of, at91_ohci_dt_ids); | ||||||
| static int ohci_at91_of_init(struct platform_device *pdev) | static int ohci_at91_of_init(struct platform_device *pdev) | ||||||
| { | { | ||||||
| 	struct device_node *np = pdev->dev.of_node; | 	struct device_node *np = pdev->dev.of_node; | ||||||
| 	int i, gpio; | 	int i, gpio, ret; | ||||||
| 	enum of_gpio_flags flags; | 	enum of_gpio_flags flags; | ||||||
| 	struct at91_usbh_data	*pdata; | 	struct at91_usbh_data	*pdata; | ||||||
| 	u32 ports; | 	u32 ports; | ||||||
|  | @ -538,8 +538,9 @@ static int ohci_at91_of_init(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (ret) | ||||||
|  | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); | 	pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); | ||||||
| 	if (!pdata) | 	if (!pdata) | ||||||
|  |  | ||||||
|  | @ -116,8 +116,9 @@ static int exynos_ohci_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (err) | ||||||
|  | 		return err; | ||||||
| 
 | 
 | ||||||
| 	exynos_ohci = devm_kzalloc(&pdev->dev, sizeof(struct exynos_ohci_hcd), | 	exynos_ohci = devm_kzalloc(&pdev->dev, sizeof(struct exynos_ohci_hcd), | ||||||
| 					GFP_KERNEL); | 					GFP_KERNEL); | ||||||
|  |  | ||||||
|  | @ -226,8 +226,10 @@ static int usb_hcd_nxp_probe(struct platform_device *pdev) | ||||||
| 		return -EPROBE_DEFER; | 		return -EPROBE_DEFER; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); |  | ||||||
| 	pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 	pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
|  | 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
|  | 	if (ret) | ||||||
|  | 		goto fail_disable; | ||||||
| 
 | 
 | ||||||
| 	dev_dbg(&pdev->dev, "%s: " DRIVER_DESC " (nxp)\n", hcd_name); | 	dev_dbg(&pdev->dev, "%s: " DRIVER_DESC " (nxp)\n", hcd_name); | ||||||
| 	if (usb_disabled()) { | 	if (usb_disabled()) { | ||||||
|  |  | ||||||
|  | @ -127,8 +127,10 @@ static int ohci_octeon_drv_probe(struct platform_device *pdev) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* Ohci is a 32-bit device. */ | 	/* Ohci is a 32-bit device. */ | ||||||
| 	pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); |  | ||||||
| 	pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 	pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
|  | 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
|  | 	if (ret) | ||||||
|  | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	hcd = usb_create_hcd(&ohci_octeon_hc_driver, &pdev->dev, "octeon"); | 	hcd = usb_create_hcd(&ohci_octeon_hc_driver, &pdev->dev, "octeon"); | ||||||
| 	if (!hcd) | 	if (!hcd) | ||||||
|  |  | ||||||
|  | @ -132,7 +132,7 @@ static int ohci_hcd_omap3_probe(struct platform_device *pdev) | ||||||
| 	struct usb_hcd		*hcd = NULL; | 	struct usb_hcd		*hcd = NULL; | ||||||
| 	void __iomem		*regs = NULL; | 	void __iomem		*regs = NULL; | ||||||
| 	struct resource		*res; | 	struct resource		*res; | ||||||
| 	int			ret = -ENODEV; | 	int			ret; | ||||||
| 	int			irq; | 	int			irq; | ||||||
| 
 | 
 | ||||||
| 	if (usb_disabled()) | 	if (usb_disabled()) | ||||||
|  | @ -168,9 +168,11 @@ static int ohci_hcd_omap3_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!dev->dma_mask) | 	if (!dev->dma_mask) | ||||||
| 		dev->dma_mask = &dev->coherent_dma_mask; | 		dev->dma_mask = &dev->coherent_dma_mask; | ||||||
| 	if (!dev->coherent_dma_mask) | 	ret = dma_set_coherent_mask(dev, DMA_BIT_MASK(32)); | ||||||
| 		dev->coherent_dma_mask = DMA_BIT_MASK(32); | 	if (ret) | ||||||
|  | 		goto err_io; | ||||||
| 
 | 
 | ||||||
|  | 	ret = -ENODEV; | ||||||
| 	hcd = usb_create_hcd(&ohci_omap3_hc_driver, dev, | 	hcd = usb_create_hcd(&ohci_omap3_hc_driver, dev, | ||||||
| 			dev_name(dev)); | 			dev_name(dev)); | ||||||
| 	if (!hcd) { | 	if (!hcd) { | ||||||
|  |  | ||||||
|  | @ -287,6 +287,7 @@ static int ohci_pxa_of_init(struct platform_device *pdev) | ||||||
| 	struct device_node *np = pdev->dev.of_node; | 	struct device_node *np = pdev->dev.of_node; | ||||||
| 	struct pxaohci_platform_data *pdata; | 	struct pxaohci_platform_data *pdata; | ||||||
| 	u32 tmp; | 	u32 tmp; | ||||||
|  | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	if (!np) | 	if (!np) | ||||||
| 		return 0; | 		return 0; | ||||||
|  | @ -297,8 +298,9 @@ static int ohci_pxa_of_init(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (ret) | ||||||
|  | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); | 	pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); | ||||||
| 	if (!pdata) | 	if (!pdata) | ||||||
|  |  | ||||||
|  | @ -113,8 +113,9 @@ static int spear_ohci_hcd_drv_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	retval = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (retval) | ||||||
|  | 		goto fail; | ||||||
| 
 | 
 | ||||||
| 	usbh_clk = devm_clk_get(&pdev->dev, NULL); | 	usbh_clk = devm_clk_get(&pdev->dev, NULL); | ||||||
| 	if (IS_ERR(usbh_clk)) { | 	if (IS_ERR(usbh_clk)) { | ||||||
|  |  | ||||||
|  | @ -77,8 +77,9 @@ static int uhci_hcd_platform_probe(struct platform_device *pdev) | ||||||
| 	 */ | 	 */ | ||||||
| 	if (!pdev->dev.dma_mask) | 	if (!pdev->dev.dma_mask) | ||||||
| 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | 		pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask; | ||||||
| 	if (!pdev->dev.coherent_dma_mask) | 	ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); | ||||||
| 		pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); | 	if (ret) | ||||||
|  | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	hcd = usb_create_hcd(&uhci_platform_hc_driver, &pdev->dev, | 	hcd = usb_create_hcd(&uhci_platform_hc_driver, &pdev->dev, | ||||||
| 			pdev->name); | 			pdev->name); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Russell King
				Russell King