aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/s3c2410fb.c
Commit message (Collapse)AuthorAgeFilesLines
* s3c2410fb: don't treat NULL clk as an errorJamie Iles2011-01-121-2/+3
| | | | | | | | | | | clk_get() returns a struct clk cookie to the driver and some platforms may return NULL if they only support a single clock. clk_get() has only failed if it returns a ERR_PTR() encoded pointer. Cc: Vincent Sanders <support@simtec.co.uk> Cc: linux-fbdev@vger.kernel.org Signed-off-by: Jamie Iles <jamie@jamieiles.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
* s3c2410fb: fix sectionsHenrik Kretzschmar2010-05-251-5/+5
| | | | | | | | | | | | | | | | Since the drivers probe calls were changed from .init.text to .devinit.text in commit c2e13037e6794bd0d9de3f9ecabf5615f15c160b ("platform-drivers: move probe to .devinit.text in drivers/video") all the function from .init.text should be moved to .devinit.text, too. The drivers remove calls can also be move from .text to .devexit.text. Signed-off-by: Henrik Kretzschmar <henne@nachtwindheim.de> Cc: Vincent Sanders <support@simtec.co.uk> Acked-by: Arnaud Patard <arnaud.patard@rtp-net.org> Tested-by: Arnaud Patard <arnaud.patard@rtp-net.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* platform-drivers: move probe to .devinit.text in drivers/videoUwe Kleine-König2010-03-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A pointer to a probe callback is passed to the core via platform_driver_register and so the function must not disappear when the .init sections are discarded. Otherwise (if also having HOTPLUG=y) unbinding and binding a device to the driver via sysfs will result in an oops as does a device being registered late. An alternative to this patch is using platform_driver_probe instead of platform_driver_register plus removing the pointer to the probe function from the struct platform_driver. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Cc: Adrian Bunk <bunk@stusta.de> Cc: Alberto Mardegan <mardy@users.sourceforge.net> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andriy Skulysh <askulysh@gmail.com> Cc: Antonino Daplas <adaplas@gmail.com> Cc: Anton Vorontsov <avorontsov@ru.mvista.com> Cc: Ben Dooks <ben-linux@fluff.org> Cc: Chandramouli Narayanan <mouli@linux.intel.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Frans Pop <elendil@planet.nl> Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: Helge Deller <deller@gmx.de> Cc: Huang Ying <ying.huang@intel.com> Cc: Ian Molton <spyro@f2s.com> Cc: Joshua Kinard <kumba@gentoo.org> Cc: Kaj-Michael Lang <milang@tal.org> Cc: Krzysztof Helt <krzysztof.h1@poczta.fm> Cc: linux-fbdev-devel@lists.sourceforge.net Cc: Maciej W. Rozycki <macro@linux-mips.org> Cc: Magnus Damm <damm@igel.co.jp> Cc: Martin Michlmayr <tbm@cyrius.com> Cc: Matthias Kaehlcke <matthias@kaehlcke.net> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Pavel Machek <pavel@suse.cz> Cc: Philipp Zabel <philipp.zabel@gmail.com> Cc: Richard Purdie <rpurdie@rpsys.net> Cc: Roel Kluin <roel.kluin@gmail.com> Cc: Roland Stigge <stigge@antcom.de> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: Vincent Sanders <vince@simtec.co.uk> Cc: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> Acked-by: Ralf Baechle <ralf@linux-mips.org> Acked-by: Arnaud Patard <arnaud.patard@rtp-net.org> Acked-by: James Simmons <jsimmons@infradead.org> Acked-by: Peter Jones <pjones@redhat.com> Acked-by: Jaya Kumar <jayakumar.lkml@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* s3c2410fb: fix clockrate calculationBen Dooks2009-09-231-1/+3
| | | | | | | | | | | | | In the final part of the calculation for the tft display clockrate we divide the output pf s3c2410fb_calc_pixclk() by 2 which leaves us with a rounding error if the result is odd. Change to using DIV_ROUND_UP() to ensure that we always choose a higher divisor and thus a lower frequency. Signed-off-by: Ben Dooks <ben@simtec.co.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* trivial: remove unnecessary semicolonsJoe Perches2009-09-211-1/+1
| | | | | Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
* s3c-fb: CPUFREQ frequency scaling supportBen Dooks2009-06-161-2/+65
| | | | | | | | | | Add support for CPU frequency scaling in the S3C24XX video driver. Signed-off-by: Simtec Linux Team <linux@simtec.co.uk> Signed-off-by: Ben Dooks <ben@simtec.co.uk> Cc: Dave Jones <davej@codemonkey.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* [ARM] 5377/1: S3C2410-Framebuffer: Fix resume path in S3C2410 framebuffer ↵Daniel Silverstone2009-02-191-0/+4
| | | | | | | | | | | driver. Ensure that the LCD engine is correctly re-initialised and the correct parameters passed ot s3c2410fb_init_registers. Signed-off-by: Simtec Linux Team <linux@simtec.co.uk> Signed-off-by: Ben Dooks <ben@simtec.co.uk> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/machRussell King2008-08-071-3/+3
| | | | | | This just leaves include/asm-arm/plat-* to deal with. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* S3C2410: fix driver MODULE_ALIAS()Ben Dooks2008-05-241-0/+2
| | | | | | | | | | | Add a correct MODULE_ALIAS() entry for this driver to enable udev module loading. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: Arnaud Patard <arnaud.patard@rtp-net.org> Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* S3C2410: clean out changelog header and tidyBen Dooks2008-05-241-67/+7
| | | | | | | | | | | Remove the old changelog entries which are now out of date and should be extractable from git anyway. Also tidy up the copyright for the driver. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: Arnaud Patard <arnaud.patard@rtp-net.org> Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* S3C2410: add error print if we cannot add attributeBen Dooks2008-05-241-1/+4
| | | | | | | | | | | | | | Fix the following warning by checking the result of device_create_file and printing an error but not removing the device (loss of debug registers is not fatal). drivers/video/s3c2410fb.c:905: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: Arnaud Patard <arnaud.patard@rtp-net.org> Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* S3C2410: ensure that FB_BLANK_POWERDOWN shuts down the controllerBen Dooks2008-05-241-20/+29
| | | | | | | | | | | | When a blank level of FB_BLANK_POWERDOWN is used, we should shut down the controller so that it no longer tries to produce any panel signals or data, and shuts down the DMA which is not needed. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: Arnaud Patard <arnaud.patard@rtp-net.org> Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* video: replace remaining __FUNCTION__ occurrencesHarvey Harrison2008-04-281-3/+3
| | | | | | | | | | | | | | | | | | | __FUNCTION__ is gcc-specific, use __func__ Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Krzysztof Helt <krzysztof.h1@wp.pl> Cc: Antonino Daplas <adaplas@gmail.com> Cc: Antonino A. Daplas <adaplas@gmail.com> Cc: Antonino Daplas <adaplas@pol.net> Cc: Richard Purdie <rpurdie@rpsys.net> Cc: Jean Delvare <khali@linux-fr.org> Cc: Adrian Bunk <bunk@stusta.de> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* FB/S3C2410: check default_display parameter passed in platform dataBen Dooks2008-02-061-0/+6
| | | | | | | | | | | | | | | | Ensure that the default display parameter passed in via the device's platform data is valid. It turns out when mach-bast.c was updated, the default_display was set outside of the display array bounds, causing a panic on startup. If the default_display is bigger than num_displays, then generate an error and refuse to initialise the driver. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Vincent Sanders <vince@simtec.co.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* FB/S3C2410: ensure S3C2410 framebuffer clears initial memory to blackBen Dooks2008-02-061-1/+1
| | | | | | | | | | | Change the initial pattern in the s3c2410 framebuffer driver to black. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Vincent Sanders <vince@simtec.co.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* FB/S3C2410: update debugging in S3C2410 framebuffer driverBen Dooks2008-02-061-1/+1
| | | | | | | | | | Update the debugging in the s3c2410 framebuffer driver. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Vincent Sanders <vince@simtec.co.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* FB/S3C2412: add S3C2412 support to S3C2410 fb driverBen Dooks2008-02-061-15/+63
| | | | | | | | | | | Add support for the S3C2412 to the S3C2410 frame buffer driver by ensuring that any moved registers can be dealt with. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Vincent Sanders <vince@simtec.co.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410_fb: fix line length calculationStefan Schmidt2008-01-211-1/+1
| | | | | | | | | | | | | | | | | | | | Fix line length calculation. var->width is the size of the display in mm. We like to use the pixel size. Without this fix, dynamic (fbset) based resolution and depths changes with s3c2410_fb don't work at all. Spotted by john cass <johnpcass@yahoo.com> Signed-off-by: Stefan Schmidt <stefan@openmoko.org> Signed-off-by: Harald Welte <laforge@openmoko.org> Acked-by: Ben Dooks <ben-linux@fluff.org> Acked-by: Arnaud Patard <arnaud.patard@rtp-net.org> Acked-by: Krzysztof Helt <krzysztof.h1@wp.pl> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@akpm@linux-foundation.org>
* s3c2410fb: fix incorrect argument type in resume functionKrzysztof Helt2008-01-141-1/+1
| | | | | | | | | | Fix wrong pointer type passed into the s3c2410fb_init_registers() function. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Cc: "Antonino A. Daplas" <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Convert files to UTF-8 and some cleanupsJan Engelhardt2007-10-191-2/+2
| | | | | | | | | | | | | | | | | | * Convert files to UTF-8. * Also correct some people's names (one example is Eißfeldt, which was found in a source file. Given that the author used an ß at all in a source file indicates that the real name has in fact a 'ß' and not an 'ss', which is commonly used as a substitute for 'ß' when limited to 7bit.) * Correct town names (Goettingen -> Göttingen) * Update Eberhard Mönkeberg's address (http://lkml.org/lkml/2007/1/8/313) Signed-off-by: Jan Engelhardt <jengelh@gmx.de> Signed-off-by: Adrian Bunk <bunk@kernel.org>
* s3c2410fb: make use of default_display settingsKrzysztof Helt2007-10-161-8/+17
| | | | | | | | | | | | | This patch changes mode selection to always prefer default mode if possible and always honor type of display set by default mode settings. This patch is required in case the same display modes were defined for different panels (e.g. STN and TFT). Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: removes lcdcon1 register value from s3c2410fb_displayKrzysztof Helt2007-10-161-8/+1
| | | | | | | | | | This patch removes lcdcon1 register field from the s3c2410fb_display as all bits are calculated from other fields. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: adds pixclock to s3c2410fb_displayKrzysztof Helt2007-10-161-26/+16
| | | | | | | | | | | | | | | This patch adds pixelclock field to the s3c2410fb_display structure and make use of it in the driver. The Bast machine defined 9 modes but pixclock and margin values are defined only for the 640x480 modes so I removed other modes. This patch also fixes wrong display type constant for the SMDK2440 board. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: source code improvementsKrzysztof Helt2007-10-161-111/+75
| | | | | | | | | | | | | | | | This patch: - moves more display mode preparations to s3c2410fb_check_var() - reduces number of fields in s3c2410fb_info - removes redundant values setting in s3c2410fb_probe() - removes static mach_info pointer - releases fb_info structure in s3c2410fb_remove() - changes s3c2410fb_init to __init from __devinit - fixes few typos in comments and removes unused includes Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: byte ordering fixesKrzysztof Helt2007-10-161-5/+15
| | | | | | | | | | | | | | This patch sets correct bits related to the byte ordering of the framebuffer. This was tested on little endian kernel only. The big endian kernel may require different settings. The patch also adds 32 bpp mode which is called 24 bpp by Samsung. One pixel takes 32 bits but only 24 bits are used in this mode. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: fix missing registers offsetKrzysztof Helt2007-10-161-12/+20
| | | | | | | | | | This patch adds missing virtual register offsets where appropriate. This fixes crashes in the driver. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: remove lcdcon2 and lcdcon3 register fieldsKrzysztof Helt2007-10-161-6/+2
| | | | | | | | | | This patch removes unused lcdcon2 and lcdcon3 register value from the s3c2410fb_display structure. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: add pulse length fields to s3c2410fb_displayKrzysztof Helt2007-10-161-18/+16
| | | | | | | | | | | This patch adds synchronization pulse lenght fields to the s3c2410fb_display structure and makes use of them in the driver. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: use vertical margins valuesKrzysztof Helt2007-10-161-14/+7
| | | | | | | | | | This patch makes use of vertical margins fields in the s3c2410fb_display structure. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: remove lcdcon3 register from s3c2410fb_displayKrzysztof Helt2007-10-161-8/+9
| | | | | | | | | | This patch removes unused lcdcon3 register from the s3c2410fb_display structure. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: use new margin fieldsKrzysztof Helt2007-10-161-98/+136
| | | | | | | | | | This patch makes use of margins fields in the s3c2410fb_display structure. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: multi-display supportKrzysztof Helt2007-10-161-34/+49
| | | | | | | | | | | This patch adds a new structure to describe and handle more than one panel (display mode) for the s3c2410 framebuffer. This structure is added after the pxafb driver. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: remove fb_info pointer from s3c2410fb_infoKrzysztof Helt2007-10-161-21/+22
| | | | | | | | | | | This patch removes redundant fb field from the s3c2410fb_info structure. This breaks circular reference fb_info -> s3c2410fb_info -> fb_info again. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: code cleanupKrzysztof Helt2007-10-161-185/+172
| | | | | | | | | | | This patch cleans up the driver a bit. It contains coding style fixes (pointed by Lindent and checkpatch), white space clean ups and few minor code improvements. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* s3c2410fb: fix s3c2410 compilationBen Dooks2007-07-311-31/+57
| | | | | | | | | | | | | The implicit mapping has been removed from the arch as this should be handled in the driver, this patch fixes the s3c2410_fb driver to ioremap() the necessary registers. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Acked-by: Arnaud Patard <arnaud.patard@rtp-net.org> Signed-off-by: Antonino Daplas <adaplas@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* [PATCH] s3c2410fb: fix un-initialised dev fieldBen Dooks2007-02-161-0/+2
| | | | | | | | | | | The current driver is not setting the dev field in the private data structure, which can lead to an OOPS if the driver tries to report an error. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Cc: James Simmons <jsimmons@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* [PATCH] s3c2410fb: Add support for STN displaysArnaud Patard (Rtp2006-12-081-43/+170
| | | | | | | | | | | | | | | | This patch adds support for stn displays on the s3c2410 arm SoC. The LCD type is choosen by a new field in the s3c2410fb_mach_info structure and its value is the value of the PNRMODE bits. This worth to be noted as a value of 0 means that you configure a 4 bit dual scan stn display. Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Russell King <rmk@arm.linux.org.uk> Cc: Ben Dooks <ben-linux@fluff.org> Acked-by: James Simmons <jsimmons@infradead.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* IRQ: Maintain regs pointer globally rather than passing to IRQ handlersDavid Howells2006-10-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells <dhowells@redhat.com> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
* [PATCH] vt: Remove VT-specific declarations and definitions from tty.hJon Smirl2006-07-101-1/+0
| | | | | | | | | | | | | MAX_NR_CONSOLES, fg_console, want_console and last_console are more of a function of the VT layer than the TTY one. Moving these to vt.h and vt_kern.h allows all of the framebuffer and VT console drivers to remove their dependency on tty.h. [akpm@osdl.org: fix alpha build] Signed-off-by: Jon Smirl <jonsmir@gmail.com> Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] irq-flags: video: Use the new IRQF_ constantsThomas Gleixner2006-07-021-1/+1
| | | | | | | | | | Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: "David S. Miller" <davem@davemloft.net> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: "Antonino A. Daplas" <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] s3c2410fb: Fix resumeArnaud Patard2006-06-261-6/+11
| | | | | | | | | | regs.lcdcon1 was not updated on suspend. The result was a garbaged display on resume. This bug was first noticed by Christer Weinigel. This patch is a modified version of the one he sent to me. Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [ARM] remove duplicate #includesHerbert Poetzl2006-02-151-1/+0
| | | | | Signed-off-by: Herbert P?tzl <herbert@13thfloor.at> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [PATCH] s3c2410fb: cleanup and fixArnaud Patard2006-01-101-6/+4
| | | | | | | | | | | | | Here are some cleanups for the s3c2410fb drivers. It : * Removes a buggy call to s3c2410fb_init_registers. There was two calls to this function but the first was done without all initialisations done. No oops but it may confuse some LCDs. * Makes two functions static. Signed-Off-By: Arnaud Patard <arnaud.patard@rtp-net.org> Signed-Off-By: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [ARM] Move asm/hardware/clock.h to linux/clk.hRussell King2006-01-071-1/+1
| | | | | | | This is needs to be visible to other architectures using the AMBA bus and peripherals. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [ARM] Remove clk_use()/clk_unuse()Russell King2006-01-031-3/+0
| | | | | | | | | It seems that clk_use() and clk_unuse() are additional complexity which isn't required anymore. Remove them from the clock framework to avoid the additional confusion which they cause, and update all ARM machine types except for OMAP. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* [DRIVER MODEL] Convert platform drivers to use struct platform_driverRussell King2005-11-091-24/+23
| | | | | | | | | This allows us to eliminate the casts in the drivers, and eventually remove the use of the device_driver function pointer methods for platform device drivers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
* [PATCH] s3c2410fb: initialise device_driver .ownerBen Dooks2005-11-071-0/+1
| | | | | | | | | | Initialise the .owner field, so that if the driver is built as a module, the system has a link to the owner Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* [PATCH] fbcon/fbdev: Move softcursor out of fbdev to fbconAntonino A. Daplas2005-11-071-1/+0
| | | | | | | | | | | | | | | | | | | | According to Jon Smirl, filling in the field fb_cursor with soft_cursor for drivers that do not support hardware cursors is redundant. The soft_cursor function is usable by all drivers because it is just a wrapper around fb_imageblit. And because soft_cursor is an fbcon-specific hook, the file is moved to the console directory. Thus, drivers that do not support hardware cursors can leave the fb_cursor field blank. For drivers that do, they can fill up this field with their own version. The end result is a smaller code size. And if the framebuffer console is not loaded, module/kernel size is also reduced because the soft_cursor module will also not be loaded. Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* Create platform_device.h to contain all the platform device details.Russell King2005-10-291-0/+1
| | | | | | | | Convert everyone who uses platform_bus_type to include linux/platform_device.h. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
* [PATCH] DRIVER MODEL: Get rid of the obsolete tri-level suspend/resume callbacksRussell King2005-10-281-16/+11
| | | | | | | | | | | | | | | | In PM v1, all devices were called at SUSPEND_DISABLE level. Then all devices were called at SUSPEND_SAVE_STATE level, and finally SUSPEND_POWER_DOWN level. However, with PM v2, to maintain compatibility for platform devices, I arranged for the PM v2 suspend/resume callbacks to call the old PM v1 suspend/resume callbacks three times with each level in order so that existing drivers continued to work. Since this is obsolete infrastructure which is no longer necessary, we can remove it. Here's an (untested) patch to do exactly that. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>