lkml.org 
[lkml]   [2011]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRE: [PATCH 1/6] sisfb: POST should fail if R/W test fails


    > -----Original Message-----
    > From: linux-fbdev-owner@vger.kernel.org [mailto:linux-fbdev-
    > owner@vger.kernel.org] On Behalf Of Aaro Koskinen
    > Sent: Monday, February 14, 2011 3:41 AM
    > To: linux-fbdev@vger.kernel.org; linux-kernel@vger.kernel.org
    > Cc: Thomas Winischhofer
    > Subject: [PATCH 1/6] sisfb: POST should fail if R/W test fails
    >
    > Currently there is no indication if R/W test fails during POST. This can
    > happen e.g. when user plugs in a card with unsupported type of memory.
    > Since the driver will be unusable, it's better to fail the whole POST
    > if the memory cannot be configured properly.
    >
    > Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    > Cc: Thomas Winischhofer <thomas@winischhofer.net>
    > ---
    > drivers/video/sis/sis_main.c | 22 +++++++++++++++++-----
    > 1 files changed, 17 insertions(+), 5 deletions(-)
    >
    > diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c
    > index 2fb8c5a..2c5de66 100644
    > --- a/drivers/video/sis/sis_main.c
    > +++ b/drivers/video/sis/sis_main.c
    > @@ -4627,11 +4627,11 @@ sisfb_post_xgi_rwtest(struct sis_video_info
    > *ivideo, int starta,
    > return 1;
    > }
    >
    > -static void __devinit
    > +static int __devinit
    > sisfb_post_xgi_ramsize(struct sis_video_info *ivideo)
    > {
    > unsigned int buswidth, ranksize, channelab, mapsize;
    > - int i, j, k, l;
    > + int i, j, k, l, status;
    > u8 reg, sr14;
    > static const u8 dramsr13[12 * 5] = {
    > 0x02, 0x0e, 0x0b, 0x80, 0x5d,
    > @@ -4673,7 +4673,7 @@ sisfb_post_xgi_ramsize(struct sis_video_info
    > *ivideo)
    > SiS_SetReg(SISSR, 0x13, 0x35);
    > SiS_SetReg(SISSR, 0x14, 0x41);
    > /* TODO */
    > - return;
    > + return -ENOMEM;
    > }
    >
    > /* Non-interleaving */
    > @@ -4835,6 +4835,7 @@ bail_out:
    >
    > j = (ivideo->chip == XGI_20) ? 5 : 9;
    > k = (ivideo->chip == XGI_20) ? 12 : 4;
    > + status = -EIO;

    How about assigning this value during variable declaration?

    >
    > for(i = 0; i < k; i++) {
    >
    > @@ -4868,11 +4869,15 @@ bail_out:
    > SiS_SetRegANDOR(SISSR, 0x14, 0x0f, (reg & 0xf0));
    > sisfb_post_xgi_delay(ivideo, 1);
    >
    > - if(sisfb_post_xgi_rwtest(ivideo, j, ((reg >> 4) + channelab -
    > 2 + 20), mapsize))
    > + if (sisfb_post_xgi_rwtest(ivideo, j, ((reg >> 4) + channelab -
    > 2 + 20), mapsize)) {
    > + status = 0;
    > break;
    > + }
    > }
    >
    > iounmap(ivideo->video_vbase);
    > +
    > + return status;
    > }
    >
    > static void __devinit
    > @@ -5648,6 +5653,7 @@ sisfb_post_xgi(struct pci_dev *pdev)
    > SiS_SetReg(SISSR, 0x14, bios[regb + 0xe0 + 8]);
    >
    > } else {
    > + int err;
    >
    > /* Set default mode, don't clear screen */
    > ivideo->SiS_Pr.SiS_UseOEM = false;
    > @@ -5661,10 +5667,16 @@ sisfb_post_xgi(struct pci_dev *pdev)
    >
    > /* Disable read-cache */
    > SiS_SetRegAND(SISSR, 0x21, 0xdf);
    > - sisfb_post_xgi_ramsize(ivideo);
    > + err = sisfb_post_xgi_ramsize(ivideo);
    > /* Enable read-cache */
    > SiS_SetRegOR(SISSR, 0x21, 0x20);
    >
    > + if (err) {
    > + dev_err(&pdev->dev,
    > + "%s: RAM size detection failed: %d\n",
    > + __func__, err);
    > + return 0;


    Are you sure you wish to return 0 when there is an error?

    > + }
    > }
    >
    > #if 0
    > --
    > 1.5.6.5
    >
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html


    \
     
     \ /
      Last update: 2011-02-14 07:11    [W:3.441 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site