Re: [PATCH v7 6/8] Loongson: YeeLoong: add video output driver

Wu Zhangjin <[email protected]>
Newsgroups gmane.linux.laptop,gmane.linux.ports.mips.general,gmane.linux.kernel
Organization DSLab, Lanzhou University, China
Message-ID <[email protected]>
On Fri, 2009-12-04 at 09:11 +0100, Pavel Machek wrote:
> On Fri 2009-12-04 21:36:43, Wu Zhangjin wrote:
> > From: Wu Zhangjin <[email protected]>
> > 
> > This patch adds Video Output Driver, it provides standard
> > interface(/sys/class/video_output) to turn on/off the video output of
> > LCD, CRT.
> > 
> 
> > diff --git a/drivers/platform/mips/Kconfig b/drivers/platform/mips/Kconfig
> > index 9c8385c..4a89c01 100644
> > --- a/drivers/platform/mips/Kconfig
> > +++ b/drivers/platform/mips/Kconfig
> > @@ -21,6 +21,7 @@ config LEMOTE_YEELOONG2F
> >  	select SYS_SUPPORTS_APM_EMULATION
> >  	select APM_EMULATION
> >  	select HWMON
> > +	select VIDEO_OUTPUT_CONTROL
> >  	default m
> >  	help
> >  	  YeeLoong netbook is a mini laptop made by Lemote, which is basically
> 
> default m is evil.
> 

why? this module can be loaded automatically, so, I let it be a module
by default.

> > +	if (status == BIT_DISPLAY_LCD_ON) {
> > +		/* Turn on LCD */
> > +		outb(0x31, 0x3c4);
> > +		value = inb(0x3c5);
> > +		value = (value & 0xf8) | 0x03;
> > +		outb(0x31, 0x3c4);
> > +		outb(value, 0x3c5);
> > +		/* Turn on backlight */
> > +		ec_write(REG_BACKLIGHT_CTRL, BIT_BACKLIGHT_ON);
> > +	} else {
> > +		/* Turn off backlight */
> > +		ec_write(REG_BACKLIGHT_CTRL, BIT_BACKLIGHT_OFF);
> > +		/* Turn off LCD */
> > +		outb(0x31, 0x3c4);
> > +		value = inb(0x3c5);
> > +		value = (value & 0xf8) | 0x02;
> > +		outb(0x31, 0x3c4);
> > +		outb(value, 0x3c5);
> > +	}
> 
> IIRC this is opencoded in suspend support; should that get common
> helpers?
> 
> > +	if (status == BIT_CRT_DETECT_PLUG) {
> > +		if (ec_read(REG_CRT_DETECT) == BIT_CRT_DETECT_PLUG) {
> > +			/* Turn on CRT */
> > +			outb(0x21, 0x3c4);
> > +			value = inb(0x3c5);
> > +			value &= ~(1 << 7);
> > +			outb(0x21, 0x3c4);
> > +			outb(value, 0x3c5);
> > +		}
> > +	} else {
> > +		/* Turn off CRT */
> > +		outb(0x21, 0x3c4);
> > +		value = inb(0x3c5);
> > +		value |= (1 << 7);
> > +		outb(0x21, 0x3c4);
> > +		outb(value, 0x3c5);
> > +	}
> 
> This looks suspiciously similar to one another and to code
> above. Perhaps some more helpers?
> 

Yes, lots of duplicated source code above, thanks!

Regards,
	Wu Zhangjin

--
To unsubscribe from this list: send the line "unsubscribe linux-laptop" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.