projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'linus' into x86/platform
[deliverable/linux.git]
/
drivers
/
spi
/
pxa2xx_spi_pci.c
diff --git
a/drivers/spi/pxa2xx_spi_pci.c
b/drivers/spi/pxa2xx_spi_pci.c
index b6589bb3a6c3772012acf507622ba560b2be74ed..378e504f89ebdf8dd7b2b503e6c3a79d8820f269 100644
(file)
--- a/
drivers/spi/pxa2xx_spi_pci.c
+++ b/
drivers/spi/pxa2xx_spi_pci.c
@@
-7,10
+7,9
@@
#include <linux/of_device.h>
#include <linux/spi/pxa2xx_spi.h>
#include <linux/of_device.h>
#include <linux/spi/pxa2xx_spi.h>
-struct
awesome_struct
{
+struct
ce4100_info
{
struct ssp_device ssp;
struct ssp_device ssp;
- struct platform_device spi_pdev;
- struct pxa2xx_spi_master spi_pdata;
+ struct platform_device *spi_pdev;
};
static DEFINE_MUTEX(ssp_lock);
};
static DEFINE_MUTEX(ssp_lock);
@@
-51,23
+50,15
@@
void pxa_ssp_free(struct ssp_device *ssp)
}
EXPORT_SYMBOL_GPL(pxa_ssp_free);
}
EXPORT_SYMBOL_GPL(pxa_ssp_free);
-static void plat_dev_release(struct device *dev)
-{
- struct awesome_struct *as = container_of(dev,
- struct awesome_struct, spi_pdev.dev);
-
- of_device_node_put(&as->spi_pdev.dev);
-}
-
static int __devinit ce4100_spi_probe(struct pci_dev *dev,
const struct pci_device_id *ent)
{
int ret;
resource_size_t phys_beg;
resource_size_t phys_len;
static int __devinit ce4100_spi_probe(struct pci_dev *dev,
const struct pci_device_id *ent)
{
int ret;
resource_size_t phys_beg;
resource_size_t phys_len;
- struct
awesome_struct
*spi_info;
+ struct
ce4100_info
*spi_info;
struct platform_device *pdev;
struct platform_device *pdev;
- struct pxa2xx_spi_master
*
spi_pdata;
+ struct pxa2xx_spi_master spi_pdata;
struct ssp_device *ssp;
ret = pci_enable_device(dev);
struct ssp_device *ssp;
ret = pci_enable_device(dev);
@@
-84,31
+75,28
@@
static int __devinit ce4100_spi_probe(struct pci_dev *dev,
return ret;
}
return ret;
}
+ pdev = platform_device_alloc("pxa2xx-spi", dev->devfn);
spi_info = kzalloc(sizeof(*spi_info), GFP_KERNEL);
spi_info = kzalloc(sizeof(*spi_info), GFP_KERNEL);
- if (!
spi_info
) {
+ if (!
pdev || !spi_info
) {
ret = -ENOMEM;
ret = -ENOMEM;
- goto err_
kz
;
+ goto err_
nomem
;
}
}
- ssp = &spi_info->ssp;
- pdev = &spi_info->spi_pdev;
- spi_pdata = &spi_info->spi_pdata;
+ memset(&spi_pdata, 0, sizeof(spi_pdata));
+ spi_pdata.num_chipselect = dev->devfn;
- pdev->name = "pxa2xx-spi";
- pdev->id = dev->devfn;
- pdev->dev.parent = &dev->dev;
- pdev->dev.platform_data = &spi_info->spi_pdata;
+ ret = platform_device_add_data(pdev, &spi_pdata, sizeof(spi_pdata));
+ if (ret)
+ goto err_nomem;
+ pdev->dev.parent = &dev->dev;
pdev->dev.of_node = dev->dev.of_node;
pdev->dev.of_node = dev->dev.of_node;
- pdev->dev.release = plat_dev_release;
-
- spi_pdata->num_chipselect = dev->devfn;
-
+ ssp = &spi_info->ssp;
ssp->phys_base = pci_resource_start(dev, 0);
ssp->mmio_base = ioremap(phys_beg, phys_len);
if (!ssp->mmio_base) {
dev_err(&pdev->dev, "failed to ioremap() registers\n");
ret = -EIO;
ssp->phys_base = pci_resource_start(dev, 0);
ssp->mmio_base = ioremap(phys_beg, phys_len);
if (!ssp->mmio_base) {
dev_err(&pdev->dev, "failed to ioremap() registers\n");
ret = -EIO;
- goto err_
remap
;
+ goto err_
nomem
;
}
ssp->irq = dev->irq;
ssp->port_id = pdev->id;
}
ssp->irq = dev->irq;
ssp->port_id = pdev->id;
@@
-120,7
+108,7
@@
static int __devinit ce4100_spi_probe(struct pci_dev *dev,
pci_set_drvdata(dev, spi_info);
pci_set_drvdata(dev, spi_info);
- ret = platform_device_
register
(pdev);
+ ret = platform_device_
add
(pdev);
if (ret)
goto err_dev_add;
if (ret)
goto err_dev_add;
@@
-133,27
+121,21
@@
err_dev_add:
mutex_unlock(&ssp_lock);
iounmap(ssp->mmio_base);
mutex_unlock(&ssp_lock);
iounmap(ssp->mmio_base);
-err_remap:
- kfree(spi_info);
-
-err_kz:
+err_nomem:
release_mem_region(phys_beg, phys_len);
release_mem_region(phys_beg, phys_len);
-
+ platform_device_put(pdev);
+ kfree(spi_info);
return ret;
}
static void __devexit ce4100_spi_remove(struct pci_dev *dev)
{
return ret;
}
static void __devexit ce4100_spi_remove(struct pci_dev *dev)
{
- struct awesome_struct *spi_info;
- struct platform_device *pdev;
+ struct ce4100_info *spi_info;
struct ssp_device *ssp;
spi_info = pci_get_drvdata(dev);
struct ssp_device *ssp;
spi_info = pci_get_drvdata(dev);
-
ssp = &spi_info->ssp;
ssp = &spi_info->ssp;
- pdev = &spi_info->spi_pdev;
-
- platform_device_unregister(pdev);
+ platform_device_unregister(spi_info->spi_pdev);
iounmap(ssp->mmio_base);
release_mem_region(pci_resource_start(dev, 0),
iounmap(ssp->mmio_base);
release_mem_region(pci_resource_start(dev, 0),
@@
-169,7
+151,6
@@
static void __devexit ce4100_spi_remove(struct pci_dev *dev)
}
static struct pci_device_id ce4100_spi_devices[] __devinitdata = {
}
static struct pci_device_id ce4100_spi_devices[] __devinitdata = {
-
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x2e6a) },
{ },
};
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x2e6a) },
{ },
};
This page took
0.02759 seconds
and
5
git commands to generate.