return -EINVAL;
        }
 
+       if (state->fb->pitches[0] % 128 != 0) {
+               DRM_DEBUG_ATOMIC("wrong stride with 128-byte aligned\n");
+               return -EINVAL;
+       }
        return 0;
 }
 
        writel(gpu_addr, priv->mmio + HIBMC_CRT_FB_ADDRESS);
 
        reg = state->fb->width * (state->fb->format->cpp[0]);
-       /* now line_pad is 16 */
-       reg = PADDING(16, reg);
 
-       line_l = state->fb->width * state->fb->format->cpp[0];
-       line_l = PADDING(16, line_l);
+       line_l = state->fb->pitches[0];
        writel(HIBMC_FIELD(HIBMC_CRT_FB_WIDTH_WIDTH, reg) |
               HIBMC_FIELD(HIBMC_CRT_FB_WIDTH_OFFS, line_l),
               priv->mmio + HIBMC_CRT_FB_WIDTH);
 
        priv->dev->mode_config.max_height = 1200;
 
        priv->dev->mode_config.fb_base = priv->fb_base;
-       priv->dev->mode_config.preferred_depth = 24;
+       priv->dev->mode_config.preferred_depth = 32;
        priv->dev->mode_config.prefer_shadow = 1;
 
        priv->dev->mode_config.funcs = (void *)&hibmc_mode_funcs;
        /* reset all the states of crtc/plane/encoder/connector */
        drm_mode_config_reset(dev);
 
-       ret = drm_fbdev_generic_setup(dev, 16);
+       ret = drm_fbdev_generic_setup(dev, dev->mode_config.preferred_depth);
        if (ret) {
                DRM_ERROR("failed to initialize fbdev: %d\n", ret);
                goto err;
 
 int hibmc_dumb_create(struct drm_file *file, struct drm_device *dev,
                      struct drm_mode_create_dumb *args)
 {
-       return drm_gem_vram_fill_create_dumb(file, dev, 0, 16, args);
+       return drm_gem_vram_fill_create_dumb(file, dev, 0, 128, args);
 }
 
 const struct drm_mode_config_funcs hibmc_mode_funcs = {