Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[sfrench/cifs-2.6.git] / arch / arm / mach-omap2 / omap_hwmod.c
index e7d23e200eccf87e9ff9e366ca25130278b12831..2ceffd85dd3d3fbcc4f80ae831713b37d23a83f3 100644 (file)
@@ -481,7 +481,7 @@ static int _wait_softreset_complete(struct omap_hwmod *oh)
 
        sysc = oh->class->sysc;
 
-       if (sysc->sysc_flags & SYSS_HAS_RESET_STATUS)
+       if (sysc->sysc_flags & SYSS_HAS_RESET_STATUS && sysc->syss_offs > 0)
                omap_test_timeout((omap_hwmod_read(oh, sysc->syss_offs)
                                   & SYSS_RESETDONE_MASK),
                                  MAX_MODULE_SOFTRESET_WAIT, c);
@@ -3171,19 +3171,19 @@ static int omap_hwmod_init_regbits(struct device *dev,
  */
 int omap_hwmod_init_reg_offs(struct device *dev,
                             const struct ti_sysc_module_data *data,
-                            u32 *rev_offs, u32 *sysc_offs, u32 *syss_offs)
+                            s32 *rev_offs, s32 *sysc_offs, s32 *syss_offs)
 {
-       *rev_offs = 0;
+       *rev_offs = -ENODEV;
        *sysc_offs = 0;
        *syss_offs = 0;
 
-       if (data->offsets[SYSC_REVISION] > 0)
+       if (data->offsets[SYSC_REVISION] >= 0)
                *rev_offs = data->offsets[SYSC_REVISION];
 
-       if (data->offsets[SYSC_SYSCONFIG] > 0)
+       if (data->offsets[SYSC_SYSCONFIG] >= 0)
                *sysc_offs = data->offsets[SYSC_SYSCONFIG];
 
-       if (data->offsets[SYSC_SYSSTATUS] > 0)
+       if (data->offsets[SYSC_SYSSTATUS] >= 0)
                *syss_offs = data->offsets[SYSC_SYSSTATUS];
 
        return 0;
@@ -3312,8 +3312,8 @@ static int omap_hwmod_check_module(struct device *dev,
                                   struct omap_hwmod *oh,
                                   const struct ti_sysc_module_data *data,
                                   struct sysc_regbits *sysc_fields,
-                                  u32 rev_offs, u32 sysc_offs,
-                                  u32 syss_offs, u32 sysc_flags,
+                                  s32 rev_offs, s32 sysc_offs,
+                                  s32 syss_offs, u32 sysc_flags,
                                   u32 idlemodes)
 {
        if (!oh->class->sysc)
@@ -3365,7 +3365,7 @@ static int omap_hwmod_check_module(struct device *dev,
 int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
                               const struct ti_sysc_module_data *data,
                               struct sysc_regbits *sysc_fields,
-                              u32 rev_offs, u32 sysc_offs, u32 syss_offs,
+                              s32 rev_offs, s32 sysc_offs, s32 syss_offs,
                               u32 sysc_flags, u32 idlemodes)
 {
        struct omap_hwmod_class_sysconfig *sysc;
@@ -3425,7 +3425,8 @@ int omap_hwmod_init_module(struct device *dev,
 {
        struct omap_hwmod *oh;
        struct sysc_regbits *sysc_fields;
-       u32 rev_offs, sysc_offs, syss_offs, sysc_flags, idlemodes;
+       s32 rev_offs, sysc_offs, syss_offs;
+       u32 sysc_flags, idlemodes;
        int error;
 
        if (!dev || !data)