return;
 
        par = info->par;
-       share = par->share;
+       share = &par->dev->share;
 
        /*
         * each time 2d function begin to work,below three variable always need
        unsigned int base, pitch, Bpp;
 
        par = info->par;
-       share = par->share;
+       share = &par->dev->share;
 
        /*
         * each time 2d function begin to work,below three variable always need
        struct lynx_share *share;
 
        par = info->par;
-       share = par->share;
+       share = &par->dev->share;
        /*
         * each time 2d function begin to work,below three variable always need
         * be set, seems we can put them together in some place
 
        ret = 0;
        par = info->par;
-       share = par->share;
+       share = &par->dev->share;
        crtc = &par->crtc;
        output = &par->output;
        var = &info->var;
        par = info->par;
        crtc = &par->crtc;
        output = &par->output;
-       share = par->share;
+       share = &par->dev->share;
 
        pr_debug("check var:%dx%d-%d\n",
                 var->xres,
 
        ret = 0;
 
-       share = par->share;
-       sm750_dev = container_of(share, struct sm750_dev, share);
+       sm750_dev = par->dev;
+       share = &sm750_dev->share;
        output = &par->output;
        crtc = &par->crtc;
 
 
        ret = 0;
        par = (struct lynxfb_par *)info->par;
-       share = par->share;
+       share = &par->dev->share;
        crtc = &par->crtc;
        output = &par->output;
        var = &info->var;
                pr_info("framebuffer #%d alloc okay\n", fbidx);
                share->fbinfo[fbidx] = info[fbidx];
                par = info[fbidx]->par;
-               par->share = share;
+               par->dev = sm750_dev;
 
                /* set fb_info structure */
                if (lynxfb_set_fbinfo(info[fbidx], fbidx)) {
 
 int hw_sm750_crtc_checkMode(struct lynxfb_crtc *crtc, struct fb_var_screeninfo *var)
 {
        struct lynx_share *share;
+       struct lynxfb_par *par = container_of(crtc, struct lynxfb_par, crtc);
 
-
-       share = container_of(crtc, struct lynxfb_par, crtc)->share;
+       share = &par->dev->share;
 
        switch (var->bits_per_pixel) {
        case 8:
 
        ret = 0;
        par = container_of(crtc, struct lynxfb_par, crtc);
-       share = par->share;
+       share = &par->dev->share;
 
        if (!share->accel_off) {
                /* set 2d engine pixel format according to mode bpp */