static int ad7606_par_probe(struct platform_device *pdev) { struct resource *res; struct iio_dev *indio_dev; void __iomem *addr; resource_size_t remap_size; int irq; irq = platform_get_irq(pdev, 0); if (irq < 0) { dev_err(&pdev->dev, "no irq\n"); return -ENODEV; } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); addr = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(addr)) return PTR_ERR(addr); remap_size = resource_size(res); indio_dev = ad7606_probe(&pdev->dev, irq, addr, platform_get_device_id(pdev)->driver_data, remap_size > 1 ? &ad7606_par16_bops : &ad7606_par8_bops); if (IS_ERR(indio_dev)) return PTR_ERR(indio_dev); platform_set_drvdata(pdev, indio_dev); return 0; }
static int ad7606_spi_probe(struct spi_device *spi) { const struct spi_device_id *id = spi_get_device_id(spi); return ad7606_probe(&spi->dev, spi->irq, NULL, id->name, id->driver_data, &ad7606_spi_bops); }
static int __devinit ad7606_par_probe(struct platform_device *pdev) { struct resource *res; struct iio_dev *indio_dev; void __iomem *addr; resource_size_t remap_size; int ret, irq; irq = platform_get_irq(pdev, 0); if (irq < 0) { dev_err(&pdev->dev, "no irq\n"); return -ENODEV; } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) return -ENODEV; remap_size = resource_size(res); /* Request the regions */ if (!request_mem_region(res->start, remap_size, "iio-ad7606")) { ret = -EBUSY; goto out1; } addr = ioremap(res->start, remap_size); if (!addr) { ret = -ENOMEM; goto out1; } indio_dev = ad7606_probe(&pdev->dev, irq, addr, platform_get_device_id(pdev)->driver_data, remap_size > 1 ? &ad7606_par16_bops : &ad7606_par8_bops); if (IS_ERR(indio_dev)) { ret = PTR_ERR(indio_dev); goto out2; } platform_set_drvdata(pdev, indio_dev); return 0; out2: iounmap(addr); out1: release_mem_region(res->start, remap_size); return ret; }
static int ad7606_spi_probe(struct spi_device *spi) { struct iio_dev *indio_dev; indio_dev = ad7606_probe(&spi->dev, spi->irq, NULL, spi_get_device_id(spi)->driver_data, &ad7606_spi_bops); if (IS_ERR(indio_dev)) return PTR_ERR(indio_dev); spi_set_drvdata(spi, indio_dev); return 0; }