DMA-API: crypto: fix ixp4xx crypto platform device support

Don't statically allocate struct device's in modules, and shut the
warning up with an empty release() function.  There's a reason that
warning is there and that's not for people to hide in this way.  It's
there to persuade people to use the correct APIs to allocate platform
devices.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Russell King 2013-06-10 18:52:52 +01:00
parent d6cfaaba1a
commit d8cbc3f792
1 changed files with 17 additions and 20 deletions

View File

@ -218,23 +218,10 @@ static dma_addr_t crypt_phys;
static int support_aes = 1; static int support_aes = 1;
static void dev_release(struct device *dev)
{
return;
}
#define DRIVER_NAME "ixp4xx_crypto" #define DRIVER_NAME "ixp4xx_crypto"
static struct platform_device pseudo_dev = {
.name = DRIVER_NAME,
.id = 0,
.num_resources = 0,
.dev = {
.coherent_dma_mask = DMA_BIT_MASK(32),
.release = dev_release,
}
};
static struct device *dev = &pseudo_dev.dev; static struct platform_device *pdev;
static struct device *dev;
static inline dma_addr_t crypt_virt2phys(struct crypt_ctl *virt) static inline dma_addr_t crypt_virt2phys(struct crypt_ctl *virt)
{ {
@ -1418,20 +1405,30 @@ static struct ixp_alg ixp4xx_algos[] = {
} }; } };
#define IXP_POSTFIX "-ixp4xx" #define IXP_POSTFIX "-ixp4xx"
static const struct platform_device_info ixp_dev_info __initdata = {
.name = DRIVER_NAME,
.id = 0,
.dma_mask = DMA_BIT_MASK(32),
};
static int __init ixp_module_init(void) static int __init ixp_module_init(void)
{ {
int num = ARRAY_SIZE(ixp4xx_algos); int num = ARRAY_SIZE(ixp4xx_algos);
int i,err ; int i, err ;
if (platform_device_register(&pseudo_dev)) pdev = platform_device_register_full(&ixp_dev_info);
return -ENODEV; if (IS_ERR(pdev))
return PTR_ERR(pdev);
dev = &pdev->dev;
spin_lock_init(&desc_lock); spin_lock_init(&desc_lock);
spin_lock_init(&emerg_lock); spin_lock_init(&emerg_lock);
err = init_ixp_crypto(); err = init_ixp_crypto();
if (err) { if (err) {
platform_device_unregister(&pseudo_dev); platform_device_unregister(pdev);
return err; return err;
} }
for (i=0; i< num; i++) { for (i=0; i< num; i++) {
@ -1496,7 +1493,7 @@ static void __exit ixp_module_exit(void)
crypto_unregister_alg(&ixp4xx_algos[i].crypto); crypto_unregister_alg(&ixp4xx_algos[i].crypto);
} }
release_ixp_crypto(); release_ixp_crypto();
platform_device_unregister(&pseudo_dev); platform_device_unregister(pdev);
} }
module_init(ixp_module_init); module_init(ixp_module_init);