All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <syrjala@sci.fi>
To: Roel Kluin <roel.kluin@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-fbdev-devel@lists.sourceforge.net, adaplas@gmail.com,
	Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH] platinumfb: misplaced parenthesis
Date: Sat, 16 May 2009 00:24:49 +0300	[thread overview]
Message-ID: <20090515212449.GD6520@sci.fi> (raw)
In-Reply-To: <4A0DD407.9090206@gmail.com>

On Fri, May 15, 2009 at 10:43:51PM +0200, Roel Kluin wrote:
> Since `+' has a higher precedence than the trinary operator `?', this
> added `hres * (1 << color_mode)' to the boolean, testing videomode
> and depth.
> 
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> ---
> Sorry for the dup. this title and changelog should be better.
> 
> > The idea is that the framebuffer is offset by 0x1020 normally, except
> > when the video mode is VMODE_832_624_75 and the depth > 8 in which case
> > it's offet by 0x1010. It's a weird piece of HW but I think the original
> > code is correct. Or do I miss something ?
> 
> Thanks for this, let's simplify to explain what I think that goes wrong:
> 
> printf("%d\n", 1 + 0 ? 2 : 4);
> 
> This prints `2': since the `+' operator has a higher precedence than the
> trinary `?' operator.
> 
> In the original code we had:
> 
> return vmode_attrs[video_mode-1].vres *
>   	       (vmode_attrs[video_mode-1].hres * (1<<color_mode) +
>   		((video_mode == VMODE_832_624_75) &&
> 		 (color_mode > CMODE_8)) ? 0x10 : 0x20) + 0x1000;
> 
> note that `hres * (1 << color_mode)' is added to
> ((video_mode == VMODE_832_624_75) && (color_mode > CMODE_8))
> before the trinary operator `?' occurs.
> 
> So maybe instead of the first patch you may want to apply this?
> 
> diff --git a/drivers/video/platinumfb.c b/drivers/video/platinumfb.c
> index 03b3670..2cc986f 100644
> --- a/drivers/video/platinumfb.c
> +++ b/drivers/video/platinumfb.c
> @@ -224,7 +224,7 @@ static inline int platinum_vram_reqd(int video_mode, int color_mode)
>  	return vmode_attrs[video_mode-1].vres *
>  	       (vmode_attrs[video_mode-1].hres * (1<<color_mode) +
>  		((video_mode == VMODE_832_624_75) &&
> -		 (color_mode > CMODE_8)) ? 0x10 : 0x20) + 0x1000;
> +		 (color_mode > CMODE_8) ? 0x1010 : 0x1020));

How about just pulling that magic video_mode/cmode handling out of that
single statement so that it could be parsed with less effort?

-- 
Ville Syrjälä
syrjala@sci.fi
http://www.sci.fi/~syrjala/

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects

  reply	other threads:[~2009-05-15 21:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-14 12:19 [PATCH] staging: misplaced parentheses? Roel Kluin
2009-05-14 16:38 ` Andrew Morton
2009-05-14 23:24   ` Benjamin Herrenschmidt
2009-05-15 10:51     ` Roel Kluin
2009-05-15 20:43     ` [PATCH] platinumfb: misplaced parenthesis Roel Kluin
2009-05-15 21:24       ` Ville Syrjälä [this message]
2009-05-15 22:21         ` Benjamin Herrenschmidt
2009-05-17 11:53           ` Roel Kluin
2009-05-17 17:11             ` Geert Uytterhoeven
2009-05-18 10:23               ` Roel Kluin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090515212449.GD6520@sci.fi \
    --to=syrjala@sci.fi \
    --cc=adaplas@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=linux-fbdev-devel@lists.sourceforge.net \
    --cc=paulus@samba.org \
    --cc=roel.kluin@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.