bool instantiated;
 
-       int (*probe)(struct platform_device *pdev);
-       int (*remove)(struct platform_device *pdev);
+       int (*probe)(struct snd_soc_card *card);
+       int (*remove)(struct snd_soc_card *card);
 
        /* the pre and post PM functions are used to do any PM work before and
         * after the codec and DAI's do any PM work. */
 
  *
  * Here we program the DMACR and PMUXCR registers.
  */
-static int mpc8610_hpcd_machine_probe(struct platform_device *sound_device)
+static int mpc8610_hpcd_machine_probe(struct snd_soc_card *card)
 {
-       struct snd_soc_card *card = platform_get_drvdata(sound_device);
        struct mpc8610_hpcd_data *machine_data =
                container_of(card, struct mpc8610_hpcd_data, card);
        struct ccsr_guts_86xx __iomem *guts;
  * This function is called to remove the sound device for one SSI.  We
  * de-program the DMACR and PMUXCR register.
  */
-static int mpc8610_hpcd_machine_remove(struct platform_device *sound_device)
+static int mpc8610_hpcd_machine_remove(struct snd_soc_card *card)
 {
-       struct snd_soc_card *card = platform_get_drvdata(sound_device);
        struct mpc8610_hpcd_data *machine_data =
                container_of(card, struct mpc8610_hpcd_data, card);
        struct ccsr_guts_86xx __iomem *guts;
 
  *
  * Here we program the DMACR and PMUXCR registers.
  */
-static int p1022_ds_machine_probe(struct platform_device *sound_device)
+static int p1022_ds_machine_probe(struct snd_soc_card *card)
 {
-       struct snd_soc_card *card = platform_get_drvdata(sound_device);
        struct machine_data *mdata =
                container_of(card, struct machine_data, card);
        struct ccsr_guts_85xx __iomem *guts;
  * This function is called to remove the sound device for one SSI.  We
  * de-program the DMACR and PMUXCR register.
  */
-static int p1022_ds_machine_remove(struct platform_device *sound_device)
+static int p1022_ds_machine_remove(struct snd_soc_card *card)
 {
-       struct snd_soc_card *card = platform_get_drvdata(sound_device);
        struct machine_data *mdata =
                container_of(card, struct machine_data, card);
        struct ccsr_guts_85xx __iomem *guts;
 
 },
 };
 
-static int tosa_probe(struct platform_device *dev)
+static int tosa_probe(struct snd_soc_card *card)
 {
        int ret;
 
        return ret;
 }
 
-static int tosa_remove(struct platform_device *dev)
+static int tosa_remove(struct snd_soc_card *card)
 {
        gpio_free(TOSA_GPIO_L_MUTE);
        return 0;
 
 },
 };
 
-static int zylonite_probe(struct platform_device *pdev)
+static int zylonite_probe(struct snd_soc_card *card)
 {
        int ret;
 
        return 0;
 }
 
-static int zylonite_remove(struct platform_device *pdev)
+static int zylonite_remove(struct snd_soc_card *card)
 {
        if (clk_pout) {
                clk_disable(pout);
 
 
 static void snd_soc_instantiate_card(struct snd_soc_card *card)
 {
-       struct platform_device *pdev = to_platform_device(card->dev);
        struct snd_soc_codec *codec;
        struct snd_soc_codec_conf *codec_conf;
        enum snd_soc_compress_type compress_type;
 
        /* initialise the sound card only once */
        if (card->probe) {
-               ret = card->probe(pdev);
+               ret = card->probe(card);
                if (ret < 0)
                        goto card_probe_error;
        }
 
 card_probe_error:
        if (card->remove)
-               card->remove(pdev);
+               card->remove(card);
 
        snd_card_free(card->snd_card);
 
 
 static int soc_cleanup_card_resources(struct snd_soc_card *card)
 {
-       struct platform_device *pdev = to_platform_device(card->dev);
        int i;
 
        /* make sure any delayed work runs */
 
        /* remove the card */
        if (card->remove)
-               card->remove(pdev);
+               card->remove(card);
 
        kfree(card->rtd);
        snd_card_free(card->snd_card);