Re: [PATCH 02/19] Staging: sm7xx: add a new framebuffer driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Greg K-H

We have found a bug in the 2D acceleration support of this patch, which
will hang the whole system when scrolling the screen.

This bug is not fixed currently, but there is a temp solution.

On Wed, 2009-12-23 at 11:51 -0800, Greg Kroah-Hartman wrote:
[...]
> +config FB_SM7XX_ACCEL
> +	bool "Siliconmotion Acceleration functions (EXPERIMENTAL)"
> +	depends on FB_SM7XX && EXPERIMENTAL
> +	help
> +	  This will compile the Trident frame buffer device with
> +	  acceleration functions.
[...]
> diff --git a/drivers/staging/sm7xx/TODO b/drivers/staging/sm7xx/TODO
> new file mode 100644
> index 0000000..1f61f5e
> --- /dev/null
> +++ b/drivers/staging/sm7xx/TODO
> @@ -0,0 +1,10 @@
> +TODO:
> +- Dual head support
> +- use kernel coding style
> +- checkpatch.pl clean
> +- refine the code and remove unused code
> +- use kernel framebuffer mode setting instead of hard code

A line should be added:

- Fix the bug of 2D acceleration.

[...]
> +
> +void smtcfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
> +{
> +	struct par_info *p = (struct par_info *)info->par;
> +
> +	if (smtc_2Dacceleration) {
> +		if (!rect->width || !rect->height)
> +			return;
> +		if (info->var.bits_per_pixel >= 24)
> +			deFillRect(p->BaseAddressInVRAM, 0, rect->dx * 3,
> +				   rect->dy * 3, rect->width * 3, rect->height,
> +				   rect->color);
> +		else
> +			deFillRect(p->BaseAddressInVRAM, 0, rect->dx, rect->dy,
> +				   rect->width, rect->height, rect->color);
> +	} else
> +		cfb_fillrect(info, rect);
> +}
> +

The above function have problems, Teddy have tried to use cfb_fillrect()
instead of smtc_fillrect() as a temp solution, and now he is focusing on
the root cause of this problem.

(Hi, Teddy, Any new progress from you?)

[...]
> +static struct fb_ops smtcfb_ops = {
> +	.owner = THIS_MODULE,
> +	.fb_setcolreg = smtc_setcolreg,
> +	.fb_blank = smtcfb_blank,
> +	.fb_fillrect = smtcfb_fillrect,

The above line should be changed to the following line as a temp fixup
of the bug:

.fb_fillrect = cfb_fillrect,

> +	.fb_imageblit = smtcfb_imageblit,
> +	.fb_copyarea = smtcfb_copyarea,
> +#ifdef __BIG_ENDIAN
> +	.fb_read = smtcfb_read,
> +	.fb_write = smtcfb_write,
> +#endif
> +
> +};
> +

Should we remove the whole 2D acceleration support or use the above
method as a temp fixup?

Anyway, Teddy Wang from Silicon Motion is focusing on this problem.

Best Regards,
	Wu Zhangjin

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux