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: 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>
This commit is contained in:
parent
4d31a2b74c
commit
0b178883b3
@ -50,6 +50,11 @@
|
|||||||
#define dbg(fmt, args...) do { } while (0)
|
#define dbg(fmt, args...) do { } while (0)
|
||||||
#endif
|
#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
|
* Here we define the default struct fb_fix_screeninfo
|
||||||
*/
|
*/
|
||||||
@ -538,6 +543,7 @@ s1d13xxxfb_probe(struct platform_device *pdev)
|
|||||||
struct fb_info *info;
|
struct fb_info *info;
|
||||||
struct s1d13xxxfb_pdata *pdata = NULL;
|
struct s1d13xxxfb_pdata *pdata = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int i;
|
||||||
u8 revision;
|
u8 revision;
|
||||||
|
|
||||||
dbg("probe called: device is %p\n", pdev);
|
dbg("probe called: device is %p\n", pdev);
|
||||||
@ -607,10 +613,19 @@ s1d13xxxfb_probe(struct platform_device *pdev)
|
|||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
revision = s1d13xxxfb_readreg(default_par, S1DREG_REV_CODE);
|
revision = s1d13xxxfb_readreg(default_par, S1DREG_REV_CODE) >> 2;
|
||||||
if ((revision >> 2) != S1D_CHIP_REV) {
|
|
||||||
printk(KERN_INFO PFX "chip not found: %i\n", (revision >> 2));
|
ret = -ENODEV;
|
||||||
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;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
#define S1D13XXXFB_H
|
#define S1D13XXXFB_H
|
||||||
|
|
||||||
#define S1D_PALETTE_SIZE 256
|
#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_FBID "S1D13806"
|
||||||
#define S1D_DEVICENAME "s1d13806fb"
|
#define S1D_DEVICENAME "s1d13806fb"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user