Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b178883 authored by Kristoffer Ericson's avatar Kristoffer Ericson Committed by Linus Torvalds
Browse files

fbdev: allow more chip revisions in Epson s1d13... video driver



The Epson s1d13xxx hardware is common in many handhelds, but our driver is
currently locked to a single chip revision.  This patch adds an array of
known to work revisions (which can be extended).

[akpm@linux-foundation.org: cleanups]
Signed-off-by: default avatarKristoffer Ericson <Kristoffer.Ericson@gmail.com>
Acked-by: default avatarThibaut Varène <varenet@parisc-linux.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 4d31a2b7
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -50,6 +50,11 @@
#define dbg(fmt, args...) do { } while (0)
#endif

static const int __devinitconst s1d13xxxfb_revisions[] = {
	S1D13506_CHIP_REV,	/* Rev.4 on HP Jornada 7xx S1D13506 */
	S1D13806_CHIP_REV,	/* Rev.7 on .. */
};

/*
 * Here we define the default struct fb_fix_screeninfo
 */
@@ -538,6 +543,7 @@ s1d13xxxfb_probe(struct platform_device *pdev)
	struct fb_info *info;
	struct s1d13xxxfb_pdata *pdata = NULL;
	int ret = 0;
	int i;
	u8 revision;

	dbg("probe called: device is %p\n", pdev);
@@ -607,10 +613,19 @@ s1d13xxxfb_probe(struct platform_device *pdev)
		goto bail;
	}

	revision = s1d13xxxfb_readreg(default_par, S1DREG_REV_CODE);
	if ((revision >> 2) != S1D_CHIP_REV) {
		printk(KERN_INFO PFX "chip not found: %i\n", (revision >> 2));
	revision = s1d13xxxfb_readreg(default_par, S1DREG_REV_CODE) >> 2;

	ret = -ENODEV;

	for (i = 0; i < ARRAY_SIZE(s1d13xxxfb_revisions); i++) {
		if (revision == s1d13xxxfb_revisions[i])
			ret = 0;
	}

	if (!ret)
		printk(KERN_INFO PFX "chip revision %i\n", revision);
	else {
		printk(KERN_INFO PFX "unknown chip revision %i\n", revision);
		goto bail;
	}

+2 −1
Original line number Diff line number Diff line
@@ -14,7 +14,8 @@
#define	S1D13XXXFB_H

#define S1D_PALETTE_SIZE		256
#define S1D_CHIP_REV			7	/* expected chip revision number for s1d13806 */
#define S1D13506_CHIP_REV		4	/* expected chip revision number for s1d13506 */
#define S1D13806_CHIP_REV		7	/* expected chip revision number for s1d13806 */
#define S1D_FBID			"S1D13806"
#define S1D_DEVICENAME			"s1d13806fb"