ckr, rbga, rbgb);
 }
 
-int rsnd_adg_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_adg_probe(struct rsnd_priv *priv)
 {
        struct rsnd_adg *adg;
        struct device *dev = rsnd_priv_to_dev(priv);
        return 0;
 }
 
-void rsnd_adg_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_adg_remove(struct rsnd_priv *priv)
 {
        struct rsnd_adg *adg = rsnd_priv_to_adg(priv);
        struct clk *clk;
 
        return rsnd_mod_get((struct rsnd_cmd *)(priv->cmd) + id);
 }
 
-int rsnd_cmd_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_cmd_probe(struct rsnd_priv *priv)
 {
        struct device *dev = rsnd_priv_to_dev(priv);
        struct rsnd_cmd *cmd;
        return 0;
 }
 
-void rsnd_cmd_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_cmd_remove(struct rsnd_priv *priv)
 {
        struct rsnd_cmd *cmd;
        int i;
 
        .set_fmt        = rsnd_soc_dai_set_fmt,
 };
 
-static int rsnd_dai_probe(struct platform_device *pdev,
-                         struct rsnd_priv *priv)
+static int rsnd_dai_probe(struct rsnd_priv *priv)
 {
        struct device_node *dai_node;
        struct device_node *dai_np, *np, *node;
        struct rsnd_dai_stream *io_capture;
        struct snd_soc_dai_driver *drv;
        struct rsnd_dai *rdai;
-       struct device *dev = &pdev->dev;
+       struct device *dev = rsnd_priv_to_dev(priv);
        int nr, dai_i, io_i, np_i;
        int ret;
 
        struct device *dev = &pdev->dev;
        struct rsnd_dai *rdai;
        const struct of_device_id *of_id = of_match_device(rsnd_of_match, dev);
-       int (*probe_func[])(struct platform_device *pdev,
-                           struct rsnd_priv *priv) = {
+       int (*probe_func[])(struct rsnd_priv *priv) = {
                rsnd_gen_probe,
                rsnd_dma_probe,
                rsnd_ssi_probe,
         *      init each module
         */
        for (i = 0; i < ARRAY_SIZE(probe_func); i++) {
-               ret = probe_func[i](pdev, priv);
+               ret = probe_func[i](priv);
                if (ret)
                        return ret;
        }
 {
        struct rsnd_priv *priv = dev_get_drvdata(&pdev->dev);
        struct rsnd_dai *rdai;
-       void (*remove_func[])(struct platform_device *pdev,
-                             struct rsnd_priv *priv) = {
+       void (*remove_func[])(struct rsnd_priv *priv) = {
                rsnd_ssi_remove,
                rsnd_ssiu_remove,
                rsnd_src_remove,
        }
 
        for (i = 0; i < ARRAY_SIZE(remove_func); i++)
-               remove_func[i](pdev, priv);
+               remove_func[i](priv);
 
        snd_soc_unregister_component(&pdev->dev);
        snd_soc_unregister_platform(&pdev->dev);
 
        return rsnd_mod_get(rsnd_ctu_get(priv, id));
 }
 
-int rsnd_ctu_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_ctu_probe(struct rsnd_priv *priv)
 {
        struct device_node *node;
        struct device_node *np;
        return ret;
 }
 
-void rsnd_ctu_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_ctu_remove(struct rsnd_priv *priv)
 {
        struct rsnd_ctu *ctu;
        int i;
 
        return rsnd_mod_get(dma);
 }
 
-int rsnd_dma_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_dma_probe(struct rsnd_priv *priv)
 {
+       struct platform_device *pdev = rsnd_priv_to_pdev(priv);
        struct device *dev = rsnd_priv_to_dev(priv);
        struct rsnd_dma_ctrl *dmac;
        struct resource *res;
 
        return rsnd_mod_get(rsnd_dvc_get(priv, id));
 }
 
-int rsnd_dvc_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_dvc_probe(struct rsnd_priv *priv)
 {
        struct device_node *node;
        struct device_node *np;
        return ret;
 }
 
-void rsnd_dvc_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_dvc_remove(struct rsnd_priv *priv)
 {
        struct rsnd_dvc *dvc;
        int i;
 
 /*
  *             Gen2
  */
-static int rsnd_gen2_probe(struct platform_device *pdev,
-                          struct rsnd_priv *priv)
+static int rsnd_gen2_probe(struct rsnd_priv *priv)
 {
        struct rsnd_regmap_field_conf conf_ssiu[] = {
                RSND_GEN_S_REG(SSI_MODE0,       0x800),
  *             Gen1
  */
 
-static int rsnd_gen1_probe(struct platform_device *pdev,
-                          struct rsnd_priv *priv)
+static int rsnd_gen1_probe(struct rsnd_priv *priv)
 {
        struct rsnd_regmap_field_conf conf_adg[] = {
                RSND_GEN_S_REG(BRRA,            0x00),
 /*
  *             Gen
  */
-int rsnd_gen_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_gen_probe(struct rsnd_priv *priv)
 {
        struct device *dev = rsnd_priv_to_dev(priv);
        struct rsnd_gen *gen;
 
        ret = -ENODEV;
        if (rsnd_is_gen1(priv))
-               ret = rsnd_gen1_probe(pdev, priv);
+               ret = rsnd_gen1_probe(priv);
        else if (rsnd_is_gen2(priv))
-               ret = rsnd_gen2_probe(pdev, priv);
+               ret = rsnd_gen2_probe(priv);
 
        if (ret < 0)
                dev_err(dev, "unknown generation R-Car sound device\n");
 
        return rsnd_mod_get(rsnd_mix_get(priv, id));
 }
 
-int rsnd_mix_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_mix_probe(struct rsnd_priv *priv)
 {
        struct device_node *node;
        struct device_node *np;
        return ret;
 }
 
-void rsnd_mix_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_mix_remove(struct rsnd_priv *priv)
 {
        struct rsnd_mix *mix;
        int i;
 
  */
 struct rsnd_mod *rsnd_dma_attach(struct rsnd_dai_stream *io,
                               struct rsnd_mod *mod, int id);
-int rsnd_dma_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
+int rsnd_dma_probe(struct rsnd_priv *priv);
 struct dma_chan *rsnd_dma_request_channel(struct device_node *of_node,
                                          struct rsnd_mod *mod, char *name);
 
 /*
  *     R-Car Gen1/Gen2
  */
-int rsnd_gen_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
+int rsnd_gen_probe(struct rsnd_priv *priv);
 void __iomem *rsnd_gen_reg_get(struct rsnd_priv *priv,
                               struct rsnd_mod *mod,
                               enum rsnd_reg reg);
  */
 int rsnd_adg_ssi_clk_stop(struct rsnd_mod *mod);
 int rsnd_adg_ssi_clk_try_start(struct rsnd_mod *mod, unsigned int rate);
-int rsnd_adg_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
-void rsnd_adg_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv);
+int rsnd_adg_probe(struct rsnd_priv *priv);
+void rsnd_adg_remove(struct rsnd_priv *priv);
 int rsnd_adg_set_convert_clk_gen2(struct rsnd_mod *mod,
                                  struct rsnd_dai_stream *io,
                                  unsigned int src_rate,
 /*
  *     R-Car SSI
  */
-int rsnd_ssi_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
-void rsnd_ssi_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv);
+int rsnd_ssi_probe(struct rsnd_priv *priv);
+void rsnd_ssi_remove(struct rsnd_priv *priv);
 struct rsnd_mod *rsnd_ssi_mod_get(struct rsnd_priv *priv, int id);
 int rsnd_ssi_is_dma_mode(struct rsnd_mod *mod);
 int rsnd_ssi_use_busif(struct rsnd_dai_stream *io);
  */
 int rsnd_ssiu_attach(struct rsnd_dai_stream *io,
                     struct rsnd_mod *mod);
-int rsnd_ssiu_probe(struct platform_device *pdev,
-                   struct rsnd_priv *priv);
-void rsnd_ssiu_remove(struct platform_device *pdev,
-                     struct rsnd_priv *priv);
+int rsnd_ssiu_probe(struct rsnd_priv *priv);
+void rsnd_ssiu_remove(struct rsnd_priv *priv);
 
 /*
  *     R-Car SRC
  */
-int rsnd_src_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
-void rsnd_src_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv);
+int rsnd_src_probe(struct rsnd_priv *priv);
+void rsnd_src_remove(struct rsnd_priv *priv);
 struct rsnd_mod *rsnd_src_mod_get(struct rsnd_priv *priv, int id);
 unsigned int rsnd_src_get_ssi_rate(struct rsnd_priv *priv,
                                   struct rsnd_dai_stream *io,
 /*
  *     R-Car CTU
  */
-int rsnd_ctu_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
-
-void rsnd_ctu_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv);
+int rsnd_ctu_probe(struct rsnd_priv *priv);
+void rsnd_ctu_remove(struct rsnd_priv *priv);
 struct rsnd_mod *rsnd_ctu_mod_get(struct rsnd_priv *priv, int id);
 #define rsnd_ctu_of_node(priv)                                         \
        of_get_child_by_name(rsnd_priv_to_dev(priv)->of_node, "rcar_sound,ctu")
 /*
  *     R-Car MIX
  */
-int rsnd_mix_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
-
-void rsnd_mix_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv);
+int rsnd_mix_probe(struct rsnd_priv *priv);
+void rsnd_mix_remove(struct rsnd_priv *priv);
 struct rsnd_mod *rsnd_mix_mod_get(struct rsnd_priv *priv, int id);
 #define rsnd_mix_of_node(priv)                                         \
        of_get_child_by_name(rsnd_priv_to_dev(priv)->of_node, "rcar_sound,mix")
 /*
  *     R-Car DVC
  */
-int rsnd_dvc_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
-void rsnd_dvc_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv);
+int rsnd_dvc_probe(struct rsnd_priv *priv);
+void rsnd_dvc_remove(struct rsnd_priv *priv);
 struct rsnd_mod *rsnd_dvc_mod_get(struct rsnd_priv *priv, int id);
 #define rsnd_dvc_of_node(priv)                                         \
        of_get_child_by_name(rsnd_priv_to_dev(priv)->of_node, "rcar_sound,dvc")
 /*
  *     R-Car CMD
  */
-int rsnd_cmd_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv);
-void rsnd_cmd_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv);
+int rsnd_cmd_probe(struct rsnd_priv *priv);
+void rsnd_cmd_remove(struct rsnd_priv *priv);
 int rsnd_cmd_attach(struct rsnd_dai_stream *io, int id);
 struct rsnd_mod *rsnd_cmd_mod_get(struct rsnd_priv *priv, int id);
 
 
        return rsnd_mod_get(rsnd_src_get(priv, id));
 }
 
-int rsnd_src_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_src_probe(struct rsnd_priv *priv)
 {
        struct device_node *node;
        struct device_node *np;
        return ret;
 }
 
-void rsnd_src_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_src_remove(struct rsnd_priv *priv)
 {
        struct rsnd_src *src;
        int i;
 
        return !!(rsnd_ssi_mode_flags(ssi) & RSND_SSI_CLK_PIN_SHARE);
 }
 
-int rsnd_ssi_probe(struct platform_device *pdev,
-                  struct rsnd_priv *priv)
+int rsnd_ssi_probe(struct rsnd_priv *priv)
 {
        struct device_node *node;
        struct device_node *np;
        return ret;
 }
 
-void rsnd_ssi_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_ssi_remove(struct rsnd_priv *priv)
 {
        struct rsnd_ssi *ssi;
        int i;
 
        return rsnd_dai_connect(mod, io, mod->type);
 }
 
-int rsnd_ssiu_probe(struct platform_device *pdev,
-                   struct rsnd_priv *priv)
+int rsnd_ssiu_probe(struct rsnd_priv *priv)
 {
        struct device *dev = rsnd_priv_to_dev(priv);
        struct rsnd_ssiu *ssiu;
        return 0;
 }
 
-void rsnd_ssiu_remove(struct platform_device *pdev,
-                    struct rsnd_priv *priv)
+void rsnd_ssiu_remove(struct rsnd_priv *priv)
 {
        struct rsnd_ssiu *ssiu;
        int i;