status = "disabled";
                        };
  
 -                              status = "disable";
 +                      mmc0: mmc@fffa8000 {
 +                              compatible = "atmel,hsmci";
 +                              reg = <0xfffa8000 0x600>;
 +                              interrupts = <9 4 0>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                              status = "disabled";
 +                      };
 +
+                       ssc0: ssc@fffbc000 {
+                               compatible = "atmel,at91rm9200-ssc";
+                               reg = <0xfffbc000 0x4000>;
+                               interrupts = <14 4 5>;
++                              status = "disabled";
+                       };
+ 
                        adc0: adc@fffe0000 {
                                compatible = "atmel,at91sam9260-adc";
                                reg = <0xfffe0000 0x100>;
 
                                status = "okay";
                        };
  
 +                      mmc0: mmc@fffa8000 {
 +                              pinctrl-0 = <
 +                                      &pinctrl_board_mmc0_slot1
 +                                      &pinctrl_mmc0_clk
 +                                      &pinctrl_mmc0_slot1_cmd_dat0
 +                                      &pinctrl_mmc0_slot1_dat1_3>;
 +                              status = "okay";
 +                              slot@1 {
 +                                      reg = <1>;
 +                                      bus-width = <4>;
 +                                      cd-gpios = <&pioC 9 0>;
 +                              };
 +                      };
 +
 +                      pinctrl@fffff400 {
 +                              mmc0_slot1 {
 +                                      pinctrl_board_mmc0_slot1: mmc0_slot1-board {
 +                                              atmel,pins =
 +                                                      <2 9 0x0 0x5>;  /* PC9 gpio CD pin pull up and deglitch */
 +                                      };
 +                              };
 +                      };
++
+                       ssc0: ssc@fffbc000 {
+                               status = "okay";
+                               pinctrl-0 = <&pinctrl_ssc0_tx>;
+                       };
                };
  
                nand0: nand@40000000 {
 
        CLKDEV_CON_DEV_ID("usart", "f8028000.serial", &usart3_clk),
        CLKDEV_CON_DEV_ID("t0_clk", "f8008000.timer", &tcb0_clk),
        CLKDEV_CON_DEV_ID("t0_clk", "f800c000.timer", &tcb0_clk),
 +      CLKDEV_CON_DEV_ID("mci_clk", "f0008000.mmc", &mmc0_clk),
 +      CLKDEV_CON_DEV_ID("mci_clk", "f000c000.mmc", &mmc1_clk),
        CLKDEV_CON_DEV_ID("dma_clk", "ffffec00.dma-controller", &dma0_clk),
        CLKDEV_CON_DEV_ID("dma_clk", "ffffee00.dma-controller", &dma1_clk),
+       CLKDEV_CON_DEV_ID("pclk", "f0010000.ssc", &ssc_clk),
        CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk),
        CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk),
        CLKDEV_CON_DEV_ID(NULL, "f8018000.i2c", &twi2_clk),
 
  extern struct platform_device exynos4_device_pcm2;
  extern struct platform_device exynos4_device_spdif;
  
- extern struct platform_device samsung_asoc_dma;
 -extern struct platform_device exynos_device_drm;
 -
  extern struct platform_device samsung_asoc_idma;
  extern struct platform_device samsung_device_keypad;
  
 
  /*
   * Instantiate the generic non-control parts of the device.
   */
 -static __devinit int wm8994_device_init(struct wm8994 *wm8994, int irq)
 +static int wm8994_device_init(struct wm8994 *wm8994, int irq)
  {
-       struct wm8994_pdata *pdata = wm8994->dev->platform_data;
+       struct wm8994_pdata *pdata;
        struct regmap_config *regmap_config;
        const struct reg_default *regmap_patch = NULL;
        const char *devname;
 
        dev_info(&pdev->dev, "Atmel SSC device at 0x%p (irq %d)\n",
                        ssc->regs, ssc->irq);
  
-       goto out;
- 
- out_unmap:
-       iounmap(ssc->regs);
- out_clk:
-       clk_put(ssc->clk);
- out_free:
-       kfree(ssc);
- out:
-       return retval;
+       return 0;
  }
  
 -static int __devexit ssc_remove(struct platform_device *pdev)
 +static int ssc_remove(struct platform_device *pdev)
  {
        struct ssc_device *ssc = platform_get_drvdata(pdev);
  
        .driver         = {
                .name           = "ssc",
                .owner          = THIS_MODULE,
+               .of_match_table = of_match_ptr(atmel_ssc_dt_ids),
        },
 -      .remove         = __devexit_p(ssc_remove),
+       .id_table       = atmel_ssc_devtypes,
+       .probe          = ssc_probe,
++      .remove         = ssc_remove,
  };
- 
- static int __init ssc_init(void)
- {
-       return platform_driver_probe(&ssc_driver, ssc_probe);
- }
- module_init(ssc_init);
- 
- static void __exit ssc_exit(void)
- {
-       platform_driver_unregister(&ssc_driver);
- }
- module_exit(ssc_exit);
+ module_platform_driver(ssc_driver);
  
  MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>");
  MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91");