aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorJonas Bonn <jonas.bonn@gmail.com>2008-10-01 15:47:19 -0400
committerTakashi Iwai <tiwai@suse.de>2008-10-12 20:18:20 -0400
commitf9d1ab39e8c993f183c39a9724ca5ad29b6336e9 (patch)
tree95f4a4f821573cc1a27df69149322adc03ff91cb /sound/soc
parentdf20cf92cae5640568ee3d48bf7a32987c057413 (diff)
ALSA: ASoC: Drop device registration from GTA01 lm4857 driver
Device registration should be handled at the machine level and not in the driver code itself. This patch removes the device registration from the driver code in preparation for moving it to the machine definition. [Squashed down two parts to this patch for bisectability - there's also a third part adding registration of the device to the out of tree GTA01 machine driver -- broonie] Signed-off-by: Jonas Bonn <jonas.bonn@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/s3c24xx/neo1973_wm8753.c51
1 files changed, 6 insertions, 45 deletions
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
index f7fc231e238e..87ddfefcc2fb 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -602,6 +602,8 @@ static int lm4857_i2c_probe(struct i2c_client *client,
602{ 602{
603 DBG("Entered %s\n", __func__); 603 DBG("Entered %s\n", __func__);
604 604
605 i2c = client;
606
605 lm4857_write_regs(); 607 lm4857_write_regs();
606 return 0; 608 return 0;
607} 609}
@@ -610,6 +612,8 @@ static int lm4857_i2c_remove(struct i2c_client *client)
610{ 612{
611 DBG("Entered %s\n", __func__); 613 DBG("Entered %s\n", __func__);
612 614
615 i2c = NULL;
616
613 return 0; 617 return 0;
614} 618}
615 619
@@ -667,48 +671,6 @@ static struct i2c_driver lm4857_i2c_driver = {
667}; 671};
668 672
669static struct platform_device *neo1973_snd_device; 673static struct platform_device *neo1973_snd_device;
670static struct i2c_client *lm4857_client;
671
672static int __init neo1973_add_lm4857_device(struct platform_device *pdev,
673 int i2c_bus,
674 unsigned short i2c_address)
675{
676 struct i2c_board_info info;
677 struct i2c_adapter *adapter;
678 struct i2c_client *client;
679 int ret;
680
681 ret = i2c_add_driver(&lm4857_i2c_driver);
682 if (ret != 0) {
683 dev_err(&pdev->dev, "can't add lm4857 driver\n");
684 return ret;
685 }
686
687 memset(&info, 0, sizeof(struct i2c_board_info));
688 info.addr = i2c_address;
689 strlcpy(info.type, "neo1973_lm4857", I2C_NAME_SIZE);
690
691 adapter = i2c_get_adapter(i2c_bus);
692 if (!adapter) {
693 dev_err(&pdev->dev, "can't get i2c adapter %d\n", i2c_bus);
694 goto err_driver;
695 }
696
697 client = i2c_new_device(adapter, &info);
698 i2c_put_adapter(adapter);
699 if (!client) {
700 dev_err(&pdev->dev, "can't add lm4857 device at 0x%x\n",
701 (unsigned int)info.addr);
702 goto err_driver;
703 }
704
705 lm4857_client = client;
706 return 0;
707
708err_driver:
709 i2c_del_driver(&lm4857_i2c_driver);
710 return -ENODEV;
711}
712 674
713static int __init neo1973_init(void) 675static int __init neo1973_init(void)
714{ 676{
@@ -735,8 +697,8 @@ static int __init neo1973_init(void)
735 return ret; 697 return ret;
736 } 698 }
737 699
738 ret = neo1973_add_lm4857_device(neo1973_snd_device, 700 ret = i2c_add_driver(&lm4857_i2c_driver);
739 0, 0x7C); 701
740 if (ret != 0) 702 if (ret != 0)
741 platform_device_unregister(neo1973_snd_device); 703 platform_device_unregister(neo1973_snd_device);
742 704
@@ -747,7 +709,6 @@ static void __exit neo1973_exit(void)
747{ 709{
748 DBG("Entered %s\n", __func__); 710 DBG("Entered %s\n", __func__);
749 711
750 i2c_unregister_device(lm4857_client);
751 i2c_del_driver(&lm4857_i2c_driver); 712 i2c_del_driver(&lm4857_i2c_driver);
752 platform_device_unregister(neo1973_snd_device); 713 platform_device_unregister(neo1973_snd_device);
753} 714}