Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6427d450 authored by Eric Miao's avatar Eric Miao
Browse files

[ARM] pxa: use platform_device_id table for SSP driver



Signed-off-by: default avatarEric Miao <eric.y.miao@gmail.com>
parent 4092855d
Loading
Loading
Loading
Loading
+15 −58
Original line number Original line Diff line number Diff line
@@ -342,8 +342,9 @@ void ssp_free(struct ssp_device *ssp)
}
}
EXPORT_SYMBOL(ssp_free);
EXPORT_SYMBOL(ssp_free);


static int __devinit ssp_probe(struct platform_device *pdev, int type)
static int __devinit ssp_probe(struct platform_device *pdev)
{
{
	const struct platform_device_id *id = platform_get_device_id(pdev);
	struct resource *res;
	struct resource *res;
	struct ssp_device *ssp;
	struct ssp_device *ssp;
	int ret = 0;
	int ret = 0;
@@ -413,7 +414,7 @@ static int __devinit ssp_probe(struct platform_device *pdev, int type)
	 */
	 */
	ssp->port_id = pdev->id + 1;
	ssp->port_id = pdev->id + 1;
	ssp->use_count = 0;
	ssp->use_count = 0;
	ssp->type = type;
	ssp->type = (int)id->driver_data;


	mutex_lock(&ssp_lock);
	mutex_lock(&ssp_lock);
	list_add(&ssp->node, &ssp_list);
	list_add(&ssp->node, &ssp_list);
@@ -457,75 +458,31 @@ static int __devexit ssp_remove(struct platform_device *pdev)
	return 0;
	return 0;
}
}


static int __devinit pxa25x_ssp_probe(struct platform_device *pdev)
static const struct platform_device_id ssp_id_table[] = {
{
	{ "pxa25x-ssp",		PXA25x_SSP },
	return ssp_probe(pdev, PXA25x_SSP);
	{ "pxa25x-nssp",	PXA25x_NSSP },
}
	{ "pxa27x-ssp",		PXA27x_SSP },

	{ },
static int __devinit pxa25x_nssp_probe(struct platform_device *pdev)
{
	return ssp_probe(pdev, PXA25x_NSSP);
}

static int __devinit pxa27x_ssp_probe(struct platform_device *pdev)
{
	return ssp_probe(pdev, PXA27x_SSP);
}

static struct platform_driver pxa25x_ssp_driver = {
	.driver		= {
		.name	= "pxa25x-ssp",
	},
	.probe		= pxa25x_ssp_probe,
	.remove		= __devexit_p(ssp_remove),
};
};


static struct platform_driver pxa25x_nssp_driver = {
static struct platform_driver ssp_driver = {
	.driver		= {
	.probe		= ssp_probe,
		.name	= "pxa25x-nssp",
	},
	.probe		= pxa25x_nssp_probe,
	.remove		= __devexit_p(ssp_remove),
	.remove		= __devexit_p(ssp_remove),
};

static struct platform_driver pxa27x_ssp_driver = {
	.driver		= {
	.driver		= {
		.name	= "pxa27x-ssp",
		.owner	= THIS_MODULE,
		.name	= "pxa2xx-ssp",
	},
	},
	.probe		= pxa27x_ssp_probe,
	.id_table	= ssp_id_table,
	.remove		= __devexit_p(ssp_remove),
};
};


static int __init pxa_ssp_init(void)
static int __init pxa_ssp_init(void)
{
{
	int ret = 0;
	return platform_driver_register(&ssp_driver);

	ret = platform_driver_register(&pxa25x_ssp_driver);
	if (ret) {
		printk(KERN_ERR "failed to register pxa25x_ssp_driver");
		return ret;
	}

	ret = platform_driver_register(&pxa25x_nssp_driver);
	if (ret) {
		printk(KERN_ERR "failed to register pxa25x_nssp_driver");
		return ret;
	}

	ret = platform_driver_register(&pxa27x_ssp_driver);
	if (ret) {
		printk(KERN_ERR "failed to register pxa27x_ssp_driver");
		return ret;
	}

	return ret;
}
}


static void __exit pxa_ssp_exit(void)
static void __exit pxa_ssp_exit(void)
{
{
	platform_driver_unregister(&pxa25x_ssp_driver);
	platform_driver_unregister(&ssp_driver);
	platform_driver_unregister(&pxa25x_nssp_driver);
	platform_driver_unregister(&pxa27x_ssp_driver);
}
}


arch_initcall(pxa_ssp_init);
arch_initcall(pxa_ssp_init);