/* Select between the IrDA and aGPS module
  */
+#if defined(CONFIG_OMAP_IR) || defined(CONFIG_OMAP_IR_MODULE)
 static int h4_select_irda(struct device *dev, int state)
 {
        unsigned char expa;
 
        return 0;
 }
+#else
+static int h4_select_irda(struct device *dev, int state) { return 0; }
+static int h4_transceiver_mode(struct device *dev, int mode) { return 0; }
+#endif
 
 static struct omap_irda_config h4_irda_data = {
        .transceiver_cap        = IR_SIRMODE | IR_MIRMODE | IR_FIRMODE,
 
        void (*mem_rel_cb)(void);
 };
 struct cpustat cpustat = {
-       .lock = __MUTEX_INITIALIZER(cpustat.lock),
        .stat = CPUSTAT_RESET,
        .icrmask = 0xffff,
 };
 
 static int __init omap_dsp_init(void)
 {
+       mutex_init(&cpustat.lock);
+
        dspmem_size = 0;
 #ifdef CONFIG_ARCH_OMAP15XX
        if (cpu_is_omap1510()) {
 
         .hw_remove      =  __exit_p(omap_aic23_remove),
         .hw_suspend     = omap_aic23_suspend,
         .hw_resume      = omap_aic23_resume,
-       .mutex      = __MUTEX_INITIALIZER(aic23_state.mutex),
 };
 
 /* This will be defined in the audio.h */
        if (machine_is_omap_h2() || machine_is_omap_h3())
                return -ENODEV;
 
+       mutex_init(&aic23_state.mutex);
+
         if (machine_is_omap_osk()) {
                 /* Set MCLK to be clock input for AIC23 */
                 aic23_mclk = clk_get(0, "mclk");
 
        .hw_remove      = omap_tsc2101_remove,
        .hw_suspend     = omap_tsc2101_suspend,
        .hw_resume      = omap_tsc2101_resume,
-       .mutex          = __MUTEX_INITIALIZER(tsc2101_state.mutex),
 };
 
 /* This will be defined in the Audio.h */
        if (machine_is_omap_osk() || machine_is_omap_innovator())
                return -ENODEV;
 
+       mutex_init(&tsc2101_state.mutex);
+
        /* register the codec with the audio driver */
        if ((err = audio_register_codec(&tsc2101_state))) {
                printk(KERN_ERR