drm: Replace drm_format_plane_cpp() with fb->format->cpp[]
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 14 Dec 2016 21:30:57 +0000 (23:30 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 15 Dec 2016 12:55:31 +0000 (14:55 +0200)
Replace drm_format_plane_cpp(fb->pixel_format) with just
fb->format->cpp[]. Avoids the expensive format info lookup.

@@
struct drm_framebuffer *a;
struct drm_framebuffer b;
expression E;
@@
(
- drm_format_plane_cpp(a->pixel_format, E)
+ a->format->cpp[E]
|
- drm_format_plane_cpp(b.pixel_format, E)
+ b.format->cpp[E]
)

@@
struct drm_plane_state *a;
struct drm_plane_state b;
expression E;
@@
(
- drm_format_plane_cpp(a->fb->pixel_format, E)
+ a->fb->format->cpp[E]
|
- drm_format_plane_cpp(b.fb->pixel_format, E)
+ b.fb->format->cpp[E]
)

@@
struct drm_framebuffer *a;
identifier T;
expression E;
@@
  T = a->pixel_format
<+...
- drm_format_plane_cpp(T, E)
+ a->format->cpp[E]
...+>

@@
struct drm_framebuffer b;
identifier T;
expression E;
@@
  T = b.pixel_format
<+...
- drm_format_plane_cpp(T, E)
+ b.format->cpp[E]
...+>

v2: Rerun spatch due to code changes

Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1481751057-18123-1-git-send-email-ville.syrjala@linux.intel.com
15 files changed:
drivers/gpu/drm/arm/hdlcd_crtc.c
drivers/gpu/drm/armada/armada_crtc.c
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_pm.c
drivers/gpu/drm/i915/intel_sprite.c
drivers/gpu/drm/imx/ipuv3-plane.c
drivers/gpu/drm/mediatek/mtk_drm_plane.c
drivers/gpu/drm/rockchip/rockchip_drm_vop.c
drivers/gpu/drm/sti/sti_gdp.c
drivers/gpu/drm/sun4i/sun4i_backend.c
drivers/gpu/drm/tilcdc/tilcdc_crtc.c
drivers/gpu/drm/tilcdc/tilcdc_plane.c
drivers/gpu/drm/vc4/vc4_plane.c
drivers/gpu/drm/zte/zx_plane.c

index 35705a4173f3999ae9573bfe0add8cce1e4c6306..ecdcd99c92cc5c74b7171dd2c9159f841af15655 100644 (file)
@@ -238,7 +238,7 @@ static void hdlcd_plane_atomic_update(struct drm_plane *plane,
        scanout_start = gem->paddr + fb->offsets[0] +
                plane->state->crtc_y * fb->pitches[0] +
                plane->state->crtc_x *
-               drm_format_plane_cpp(fb->pixel_format, 0);
+               fb->format->cpp[0];
 
        hdlcd = plane->dev->dev_private;
        hdlcd_write(hdlcd, HDLCD_REG_FB_LINE_LENGTH, fb->pitches[0]);
index 2e1c63569c7289e1a29be6f9543082ff959ca4bd..99283f30edc5d89081d37ec87f009c7da39a9ecc 100644 (file)
@@ -169,7 +169,6 @@ void armada_drm_plane_calc_addrs(u32 *addrs, struct drm_framebuffer *fb,
        int x, int y)
 {
        u32 addr = drm_fb_obj(fb)->dev_addr;
-       u32 pixel_format = fb->pixel_format;
        int num_planes = fb->format->num_planes;
        int i;
 
@@ -178,7 +177,7 @@ void armada_drm_plane_calc_addrs(u32 *addrs, struct drm_framebuffer *fb,
 
        for (i = 0; i < num_planes; i++)
                addrs[i] = addr + fb->offsets[i] + y * fb->pitches[i] +
-                            x * drm_format_plane_cpp(pixel_format, i);
+                            x * fb->format->cpp[i];
        for (; i < 3; i++)
                addrs[i] = 0;
 }
index f97ae75f9e63ffb6c86e0fd6199e77633c643c84..3e00512ef187eb57060da150e859399b35dbf00d 100644 (file)
@@ -672,7 +672,7 @@ static int atmel_hlcdc_plane_atomic_check(struct drm_plane *p,
                int xdiv = i ? hsub : 1;
                int ydiv = i ? vsub : 1;
 
-               state->bpp[i] = drm_format_plane_cpp(fb->pixel_format, i);
+               state->bpp[i] = fb->format->cpp[i];
                if (!state->bpp[i])
                        return -EINVAL;
 
index 8e3ad9afbe3018883b3a3debf4857fc1dc841a42..3c064558cde098755d993ab11ea67201875cb0af 100644 (file)
@@ -2275,7 +2275,7 @@ u32 intel_fb_xy_to_linear(int x, int y,
                          int plane)
 {
        const struct drm_framebuffer *fb = state->base.fb;
-       unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
+       unsigned int cpp = fb->format->cpp[plane];
        unsigned int pitch = fb->pitches[plane];
 
        return y * pitch + x * cpp;
@@ -2344,7 +2344,7 @@ static u32 intel_adjust_tile_offset(int *x, int *y,
 {
        const struct drm_i915_private *dev_priv = to_i915(state->base.plane->dev);
        const struct drm_framebuffer *fb = state->base.fb;
-       unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
+       unsigned int cpp = fb->format->cpp[plane];
        unsigned int rotation = state->base.rotation;
        unsigned int pitch = intel_fb_pitch(fb, plane, rotation);
 
@@ -2400,7 +2400,7 @@ static u32 _intel_compute_tile_offset(const struct drm_i915_private *dev_priv,
                                      u32 alignment)
 {
        uint64_t fb_modifier = fb->modifier;
-       unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
+       unsigned int cpp = fb->format->cpp[plane];
        u32 offset, offset_aligned;
 
        if (alignment)
@@ -2468,7 +2468,7 @@ u32 intel_compute_tile_offset(int *x, int *y,
 static void intel_fb_offset_to_xy(int *x, int *y,
                                  const struct drm_framebuffer *fb, int plane)
 {
-       unsigned int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
+       unsigned int cpp = fb->format->cpp[plane];
        unsigned int pitch = fb->pitches[plane];
        u32 linear_offset = fb->offsets[plane];
 
@@ -2506,7 +2506,7 @@ intel_fill_fb_info(struct drm_i915_private *dev_priv,
                u32 offset;
                int x, y;
 
-               cpp = drm_format_plane_cpp(format, i);
+               cpp = fb->format->cpp[i];
                width = drm_format_plane_width(fb->width, format, i);
                height = drm_format_plane_height(fb->height, format, i);
 
@@ -2833,7 +2833,7 @@ valid_fb:
 static int skl_max_plane_width(const struct drm_framebuffer *fb, int plane,
                               unsigned int rotation)
 {
-       int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
+       int cpp = fb->format->cpp[plane];
 
        switch (fb->modifier) {
        case DRM_FORMAT_MOD_NONE:
@@ -2912,7 +2912,7 @@ static int skl_check_main_surface(struct intel_plane_state *plane_state)
         * TODO: linear and Y-tiled seem fine, Yf untested,
         */
        if (fb->modifier == I915_FORMAT_MOD_X_TILED) {
-               int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               int cpp = fb->format->cpp[0];
 
                while ((x + w) * cpp > fb->pitches[0]) {
                        if (offset == 0) {
@@ -3278,7 +3278,7 @@ u32 skl_plane_stride(const struct drm_framebuffer *fb, int plane,
         * linear buffers or in number of tiles for tiled buffers.
         */
        if (drm_rotation_90_or_270(rotation)) {
-               int cpp = drm_format_plane_cpp(fb->pixel_format, plane);
+               int cpp = fb->format->cpp[plane];
 
                stride /= intel_tile_height(dev_priv, fb->modifier, cpp);
        } else {
index 8cc7c346cbd9803cba9d3fcf9063a9e654a64bc8..f6406ebd533c8d9195126340d15a28b07983ba0e 100644 (file)
@@ -652,7 +652,7 @@ static void pineview_update_wm(struct intel_crtc *unused_crtc)
                        &crtc->config->base.adjusted_mode;
                const struct drm_framebuffer *fb =
                        crtc->base.primary->state->fb;
-               int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               int cpp = fb->format->cpp[0];
                int clock = adjusted_mode->crtc_clock;
 
                /* Display SR */
@@ -727,7 +727,7 @@ static bool g4x_compute_wm0(struct drm_i915_private *dev_priv,
        clock = adjusted_mode->crtc_clock;
        htotal = adjusted_mode->crtc_htotal;
        hdisplay = crtc->config->pipe_src_w;
-       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       cpp = fb->format->cpp[0];
 
        /* Use the small buffer method to calculate plane watermark */
        entries = ((clock * cpp / 1000) * display_latency_ns) / 1000;
@@ -816,7 +816,7 @@ static bool g4x_compute_srwm(struct drm_i915_private *dev_priv,
        clock = adjusted_mode->crtc_clock;
        htotal = adjusted_mode->crtc_htotal;
        hdisplay = crtc->config->pipe_src_w;
-       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       cpp = fb->format->cpp[0];
 
        line_time_us = max(htotal * 1000 / clock, 1);
        line_count = (latency_ns / line_time_us + 1000) / 1000;
@@ -963,7 +963,7 @@ static uint16_t vlv_compute_wm_level(struct intel_plane *plane,
        if (!state->base.visible)
                return 0;
 
-       cpp = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
+       cpp = state->base.fb->format->cpp[0];
        clock = crtc->config->base.adjusted_mode.crtc_clock;
        htotal = crtc->config->base.adjusted_mode.crtc_htotal;
        width = crtc->config->pipe_src_w;
@@ -1004,7 +1004,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
 
                if (state->base.visible) {
                        wm_state->num_active_planes++;
-                       total_rate += drm_format_plane_cpp(state->base.fb->pixel_format, 0);
+                       total_rate += state->base.fb->format->cpp[0];
                }
        }
 
@@ -1023,7 +1023,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
                        continue;
                }
 
-               rate = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
+               rate = state->base.fb->format->cpp[0];
                plane->wm.fifo_size = fifo_size * rate / total_rate;
                fifo_left -= plane->wm.fifo_size;
        }
@@ -1455,7 +1455,7 @@ static void i965_update_wm(struct intel_crtc *unused_crtc)
                int clock = adjusted_mode->crtc_clock;
                int htotal = adjusted_mode->crtc_htotal;
                int hdisplay = crtc->config->pipe_src_w;
-               int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               int cpp = fb->format->cpp[0];
                unsigned long line_time_us;
                int entries;
 
@@ -1541,7 +1541,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
                if (IS_GEN2(dev_priv))
                        cpp = 4;
                else
-                       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+                       cpp = fb->format->cpp[0];
 
                planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
                                               wm_info, fifo_size, cpp,
@@ -1568,7 +1568,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
                if (IS_GEN2(dev_priv))
                        cpp = 4;
                else
-                       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+                       cpp = fb->format->cpp[0];
 
                planeb_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
                                               wm_info, fifo_size, cpp,
@@ -1621,7 +1621,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
                if (IS_I915GM(dev_priv) || IS_I945GM(dev_priv))
                        cpp = 4;
                else
-                       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+                       cpp = fb->format->cpp[0];
 
                line_time_us = max(htotal * 1000 / clock, 1);
 
@@ -1787,7 +1787,7 @@ static uint32_t ilk_compute_pri_wm(const struct intel_crtc_state *cstate,
        if (!cstate->base.active || !pstate->base.visible)
                return 0;
 
-       cpp = drm_format_plane_cpp(pstate->base.fb->pixel_format, 0);
+       cpp = pstate->base.fb->format->cpp[0];
 
        method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
 
@@ -1816,7 +1816,7 @@ static uint32_t ilk_compute_spr_wm(const struct intel_crtc_state *cstate,
        if (!cstate->base.active || !pstate->base.visible)
                return 0;
 
-       cpp = drm_format_plane_cpp(pstate->base.fb->pixel_format, 0);
+       cpp = pstate->base.fb->format->cpp[0];
 
        method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
        method2 = ilk_wm_method2(ilk_pipe_pixel_rate(cstate),
@@ -1860,7 +1860,7 @@ static uint32_t ilk_compute_fbc_wm(const struct intel_crtc_state *cstate,
        if (!cstate->base.active || !pstate->base.visible)
                return 0;
 
-       cpp = drm_format_plane_cpp(pstate->base.fb->pixel_format, 0);
+       cpp = pstate->base.fb->format->cpp[0];
 
        return ilk_wm_fbc(pri_val, drm_rect_width(&pstate->base.dst), cpp);
 }
@@ -3258,13 +3258,13 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
        if (format == DRM_FORMAT_NV12) {
                if (y)  /* y-plane data rate */
                        data_rate = width * height *
-                               drm_format_plane_cpp(format, 0);
+                               fb->format->cpp[0];
                else    /* uv-plane data rate */
                        data_rate = (width / 2) * (height / 2) *
-                               drm_format_plane_cpp(format, 1);
+                               fb->format->cpp[1];
        } else {
                /* for packed formats */
-               data_rate = width * height * drm_format_plane_cpp(format, 0);
+               data_rate = width * height * fb->format->cpp[0];
        }
 
        down_scale_amount = skl_plane_downscale_amount(intel_pstate);
@@ -3351,9 +3351,9 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate,
        }
 
        if (fb->pixel_format == DRM_FORMAT_NV12 && !y)
-               plane_bpp = drm_format_plane_cpp(fb->pixel_format, 1);
+               plane_bpp = fb->format->cpp[1];
        else
-               plane_bpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               plane_bpp = fb->format->cpp[0];
 
        if (drm_rotation_90_or_270(pstate->rotation)) {
                switch (plane_bpp) {
@@ -3613,13 +3613,13 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
        if (drm_rotation_90_or_270(pstate->rotation))
                swap(width, height);
 
-       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       cpp = fb->format->cpp[0];
        plane_pixel_rate = skl_adjusted_plane_pixel_rate(cstate, intel_pstate);
 
        if (drm_rotation_90_or_270(pstate->rotation)) {
                int cpp = (fb->pixel_format == DRM_FORMAT_NV12) ?
-                       drm_format_plane_cpp(fb->pixel_format, 1) :
-                       drm_format_plane_cpp(fb->pixel_format, 0);
+                       fb->format->cpp[1] :
+                       fb->format->cpp[0];
 
                switch (cpp) {
                case 1:
index 8f131a08d440cf02cbcd9ffe255b94e3f4eb6077..b46c1794d3ac3588ae24fa3c1d9037620022e35f 100644 (file)
@@ -885,7 +885,7 @@ intel_check_sprite_plane(struct drm_plane *plane,
        /* Check size restrictions when scaling */
        if (state->base.visible && (src_w != crtc_w || src_h != crtc_h)) {
                unsigned int width_bytes;
-               int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               int cpp = fb->format->cpp[0];
 
                WARN_ON(!can_scale);
 
index e74a0ad52950c6530aeaeb73e253db111cc948ca..f44a836563109cae1ee1cc25c1b7a226fc3ba2e3 100644 (file)
@@ -77,7 +77,7 @@ drm_plane_state_to_eba(struct drm_plane_state *state)
        BUG_ON(!cma_obj);
 
        return cma_obj->paddr + fb->offsets[0] + fb->pitches[0] * y +
-              drm_format_plane_cpp(fb->pixel_format, 0) * x;
+              fb->format->cpp[0] * x;
 }
 
 static inline unsigned long
@@ -96,7 +96,7 @@ drm_plane_state_to_ubo(struct drm_plane_state *state)
        y /= drm_format_vert_chroma_subsampling(fb->pixel_format);
 
        return cma_obj->paddr + fb->offsets[1] + fb->pitches[1] * y +
-              drm_format_plane_cpp(fb->pixel_format, 1) * x - eba;
+              fb->format->cpp[1] * x - eba;
 }
 
 static inline unsigned long
@@ -115,7 +115,7 @@ drm_plane_state_to_vbo(struct drm_plane_state *state)
        y /= drm_format_vert_chroma_subsampling(fb->pixel_format);
 
        return cma_obj->paddr + fb->offsets[2] + fb->pitches[2] * y +
-              drm_format_plane_cpp(fb->pixel_format, 2) * x - eba;
+              fb->format->cpp[2] * x - eba;
 }
 
 void ipu_plane_put_resources(struct ipu_plane *ipu_plane)
index c461a232cbf5b0f5ebf589481f4391e7f27f24e0..71421923c592f4930399e4faa3aec45874f9e381 100644 (file)
@@ -135,7 +135,7 @@ static void mtk_plane_atomic_update(struct drm_plane *plane,
        pitch = fb->pitches[0];
        format = fb->pixel_format;
 
-       addr += (plane->state->src.x1 >> 16) * drm_format_plane_cpp(format, 0);
+       addr += (plane->state->src.x1 >> 16) * fb->format->cpp[0];
        addr += (plane->state->src.y1 >> 16) * pitch;
 
        state->pending.enable = true;
index c7eba305c48830b225d3927185ad849dac193d07..50e085e742140e74f44fb6d33c3c1d21fc61fe0c 100644 (file)
@@ -749,7 +749,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
        dsp_sty = dest->y1 + crtc->mode.vtotal - crtc->mode.vsync_start;
        dsp_st = dsp_sty << 16 | (dsp_stx & 0xffff);
 
-       offset = (src->x1 >> 16) * drm_format_plane_cpp(fb->pixel_format, 0);
+       offset = (src->x1 >> 16) * fb->format->cpp[0];
        offset += (src->y1 >> 16) * fb->pitches[0];
        dma_addr = rk_obj->dma_addr + offset + fb->offsets[0];
 
@@ -763,7 +763,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
        if (is_yuv_support(fb->pixel_format)) {
                int hsub = drm_format_horz_chroma_subsampling(fb->pixel_format);
                int vsub = drm_format_vert_chroma_subsampling(fb->pixel_format);
-               int bpp = drm_format_plane_cpp(fb->pixel_format, 1);
+               int bpp = fb->format->cpp[1];
 
                uv_obj = rockchip_fb_get_gem_obj(fb, 1);
                rk_uv_obj = to_rockchip_obj(uv_obj);
index 81df3097b54561ea37cf23a77e39ce5f95108c0c..58316bd6d7d6b2edeefe06a5bc4b7b04fc813a22 100644 (file)
@@ -757,7 +757,7 @@ static void sti_gdp_atomic_update(struct drm_plane *drm_plane,
                         (unsigned long)cma_obj->paddr);
 
        /* pixel memory location */
-       bpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       bpp = fb->format->cpp[0];
        top_field->gam_gdp_pml = (u32)cma_obj->paddr + fb->offsets[0];
        top_field->gam_gdp_pml += src_x * bpp;
        top_field->gam_gdp_pml += src_y * fb->pitches[0];
index 2e08f969bb64e796061b6fbdce3c061a0eaae375..a606207d4e25639b3d9756a9772f69cecd039f19 100644 (file)
@@ -218,7 +218,7 @@ int sun4i_backend_update_layer_buffer(struct sun4i_backend *backend,
        DRM_DEBUG_DRIVER("Using GEM @ %pad\n", &gem->paddr);
 
        /* Compute the start of the displayed memory */
-       bpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       bpp = fb->format->cpp[0];
        paddr = gem->paddr + fb->offsets[0];
        paddr += (state->src_x >> 16) * bpp;
        paddr += (state->src_y >> 16) * fb->pitches[0];
index 9942b0577d6e556a2fce45b1d66c3ac410bf5c37..0dc96e12fd06dc17a9f6c992705a12a06c4df9c3 100644 (file)
@@ -91,7 +91,7 @@ static void set_scanout(struct drm_crtc *crtc, struct drm_framebuffer *fb)
 
        start = gem->paddr + fb->offsets[0] +
                crtc->y * fb->pitches[0] +
-               crtc->x * drm_format_plane_cpp(fb->pixel_format, 0);
+               crtc->x * fb->format->cpp[0];
 
        end = start + (crtc->mode.vdisplay * fb->pitches[0]);
 
index 8a6a50d74aff9f33f834f9f0323efc4228ef5b3f..c0fc874e91cfe1a25a2d3b6cfa3bd1a38f5770cb 100644 (file)
@@ -69,7 +69,7 @@ static int tilcdc_plane_atomic_check(struct drm_plane *plane,
        }
 
        pitch = crtc_state->mode.hdisplay *
-               drm_format_plane_cpp(state->fb->pixel_format, 0);
+               state->fb->format->cpp[0];
        if (state->fb->pitches[0] != pitch) {
                dev_err(plane->dev->dev,
                        "Invalid pitch: fb and crtc widths must be the same");
index a7fb581c7c55e8b63faba359cf4bfb58d9b160a2..f84f6bddd015ab632f8018493e1980376ed2821d 100644 (file)
@@ -369,7 +369,7 @@ static int vc4_plane_setup_clipping_and_scaling(struct drm_plane_state *state)
         */
        if (vc4_state->crtc_x < 0) {
                for (i = 0; i < num_planes; i++) {
-                       u32 cpp = drm_format_plane_cpp(fb->pixel_format, i);
+                       u32 cpp = fb->format->cpp[i];
                        u32 subs = ((i == 0) ? 1 : h_subsample);
 
                        vc4_state->offsets[i] += (cpp *
index 546eb92a94e84ef3515234ba68c3cdebaedebba4..72d27b0a48b2e5c8811497f5bfb71410a10ebd85 100644 (file)
@@ -159,7 +159,7 @@ static void zx_gl_plane_atomic_update(struct drm_plane *plane,
        dst_w = plane->state->crtc_w;
        dst_h = plane->state->crtc_h;
 
-       bpp = drm_format_plane_cpp(format, 0);
+       bpp = fb->format->cpp[0];
 
        cma_obj = drm_fb_cma_get_gem_obj(fb, 0);
        paddr = cma_obj->paddr + fb->offsets[0];