/**
  * omap_hwmod_init_regbits - init sysconfig specific register bits
  * @dev: struct device
+ * @oh: module
  * @data: module data
  * @sysc_fields: new sysc configuration
  */
-static int omap_hwmod_init_regbits(struct device *dev,
+static int omap_hwmod_init_regbits(struct device *dev, struct omap_hwmod *oh,
                                   const struct ti_sysc_module_data *data,
                                   struct sysc_regbits **sysc_fields)
 {
-       *sysc_fields = NULL;
-
        switch (data->cap->type) {
        case TI_SYSC_OMAP2:
        case TI_SYSC_OMAP2_TIMER:
                *sysc_fields = &omap_hwmod_sysc_type_usb_host_fs;
                break;
        default:
+               *sysc_fields = NULL;
+               if (!oh->class->sysc->sysc_fields)
+                       return 0;
+
+               dev_err(dev, "sysc_fields not found\n");
+
                return -EINVAL;
        }
 
        if (!oh->class->sysc)
                return -ENODEV;
 
-       if (sysc_fields != oh->class->sysc->sysc_fields)
-               dev_warn(dev, "sysc_fields %p != %p\n", sysc_fields,
-                        oh->class->sysc->sysc_fields);
+       if (oh->class->sysc->sysc_fields &&
+           sysc_fields != oh->class->sysc->sysc_fields)
+               dev_warn(dev, "sysc_fields mismatch\n");
 
        if (rev_offs != oh->class->sysc->rev_offs)
                dev_warn(dev, "rev_offs %08x != %08x\n", rev_offs,
 
        cookie->data = oh;
 
-       error = omap_hwmod_init_regbits(dev, data, &sysc_fields);
+       error = omap_hwmod_init_regbits(dev, oh, data, &sysc_fields);
        if (error)
                return error;