Skip to content

Commit

Permalink
fbdev: allow more chip revisions in Epson s1d13... video driver
Browse files Browse the repository at this point in the history
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: Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
Acked-by: Thibaut Varène <varenet@parisc-linux.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Kristoffer Ericson authored and Linus Torvalds committed Oct 16, 2008
1 parent 4d31a2b commit 0b17888
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
23 changes: 19 additions & 4 deletions drivers/video/s1d13xxxfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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));
ret = -ENODEV;
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;
}

Expand Down
3 changes: 2 additions & 1 deletion include/video/s1d13xxxfb.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down

0 comments on commit 0b17888

Please sign in to comment.