public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
From: krzysztof.h1-IjDXvh/HVVUAvxtiuMwx3w@public.gmane.org
To: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>,
	Krzysztof Helt
	<krzysztof.h1-IjDXvh/HVVUAvxtiuMwx3w@public.gmane.org>,
	Linux-fbdev-devel
	<linux-fbdev-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: Re: [PATCH] tdfxfb: move I2C functionality into the tdfxfb
Date: 23 Mar 2009 12:01:33 +0100	[thread overview]
Message-ID: <20090323110133.7CB7186118D@f35.poczta.interia.pl> (raw)

Jean Delvare napisał(a):
> Hi Krzysztof,
> 
> On Sat, 21 Mar 2009 20:29:54 +0100, Krzysztof Helt wrote:
> > From: Krzysztof Helt >krzysztof.h1-5tc4TXWwyLM@public.gmane.org>
> > 
> > The I2C functionality provided by the
> > i2c-voodoo3 driver is moved into the
> > tdfxfb (frame buffer driver for Voodoo3
> > cards). This way there is no conflict
> > between i2c driver and the fb driver.
> > 
> > The tdfxfb does not make use from the
> > DDC functionality yet. It just provides 
> > two I2C buses like the i2c-voodoo3 driver
> > (DDC and I2C).
> 
> This change has my full support. In fact it was on my to-do list for
> this year, so I am very happy to see someone else beat me at it :)
> 
> (BTW: can you please trim lines at ~70 characters rather than 42? Too
> frequent new lines make the text harder to read IMHO.)
> 

I will make lines longer

> > 
> > Signed-off-by: Krzysztof Helt >krzysztof.h1-5tc4TXWwyLM@public.gmane.org>
> > ---
> > 
> > This open way to remove the i2c-voodoo3 driver.
> > 
> > 
> >  drivers/video/Kconfig  |    9 ++
> >  drivers/video/tdfxfb.c |  191
> +++++++++++++++++++++++++++++++++++++++++++++++-
> >  include/video/tdfx.h   |   24 ++++++
> >  3 files changed, 223 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
> > index 6ff3364..837479b 100644
> > --- a/drivers/video/Kconfig
> > +++ b/drivers/video/Kconfig
> > @@ -1550,6 +1550,7 @@ config FB_3DFX
> >  	select FB_CFB_IMAGEBLIT
> >  	select FB_CFB_FILLRECT
> >  	select FB_CFB_COPYAREA
> > +	select FB_MODE_HELPERS
> >  	help
> >  	  This driver supports graphics boards with the 3Dfx Banshee,
> >  	  Voodoo3 or VSA-100 (aka Voodoo4/5) chips. Say Y if you have
> > @@ -1565,6 +1566,14 @@ config FB_3DFX_ACCEL
> >  	This will compile the 3Dfx Banshee/Voodoo3/VSA-100 frame buffer
> >  	device driver with acceleration functions.
> >  
> > +config FB_3DFX_I2C
> > +	bool "DDC/I2C for 3dfx Voodoo3 support"
> 
> I see that some other drivers have a similarly unfortunate wording, but
> I&#039;d prefer something clearer and less redundant such as "Enable DDC/I2C
> Support" (as the nvidiafb, rivafb and i810fb drivers do.)
> 

Ok. The word "Enable" is a good hint. I'll change this.

> > +	depends on FB_3DFX >> EXPERIMENTAL
> > +	select FB_DDC
> > +	default y
> > +	help
> > +	  Say Y here if you want DDC/I2C support for your 3dfx Voodoo3.
> 
> It might be worth adding a note that the driver itself doesn&#039;t yet take
> benefit of the DDC channel.
> 

IHMO, it does not matter. A separate patch which make use of it is already
ready to post. If this patch is accepted, the second one will be posted. It 
is not worth to add a comment then remove it in the next patch.

> > +
> >  config FB_VOODOO1
> >  	tristate "3Dfx Voodoo Graphics (sst1) support"
> >  	depends on FB >> PCI
> > diff --git a/drivers/video/tdfxfb.c b/drivers/video/tdfxfb.c
> > index 14bd3f3..c4152a5 100644
> > --- a/drivers/video/tdfxfb.c
> > +++ b/drivers/video/tdfxfb.c
> > @@ -1167,6 +1167,190 @@ static struct fb_ops tdfxfb_ops = {
> >  #endif
> >  };
> >  
> > +#ifdef CONFIG_FB_3DFX_I2C
> > +/* The voo GPIO registers don&#039;t have individual masks for each bit
> > +   so we always have to read before writing. */
> 
> As far as I can see, some of the code and comments is taken directly
> from the i2c-voodoo3 driver, so it would seem fair to acknowledge the
> work of its author (Philip Edelbrock >phil-KXOFo5pg7o1l57MIdRCFDg@public.gmane.org>) in the
> header comment of the file.
> 

Ok

(...)
> > +static int __devinit tdfxfb_setup_ddc_bus(struct tdfxfb_i2c_chan
> *chan,
> > +					  const char *name, struct device *dev)
> > +{
> > +	int rc;
> > +
> > +	strcpy(chan->adapter.name, name);
> 
> Please use strlcpy() instead.
> 
> > +	chan->adapter.owner		= THIS_MODULE;
> > +	chan->adapter.class		= I2C_CLASS_DDC;
> 
> You must include >linux/i2c.h> to use this. I know it is indirectly
> included but relying on indirect includes is a bad practice.
> 

It is included by the tdfx.h which is vital to the tdfxfb.c.

> > +static void __devinit tdfxfb_create_i2c_busses(struct fb_info *info)
> > +{
> > +	struct tdfx_par *par = info->par;
> > +
> > +	tdfx_outl(par, VIDINFORMAT, 0x8160);
> > +	tdfx_outl(par, VIDSERPARPORT, 0xcffc0020);
> > +
> > +	par->chan[0].par = par;
> > +	par->chan[1].par = par;
> > +
> > +	tdfxfb_setup_ddc_bus(>par->chan[0], "VOODOO3-DDC", info->dev);
> > +	tdfxfb_setup_i2c_bus(>par->chan[1], "VOODOO3-I2C", info->dev);
> 
> Why all-caps names? What about "Voodoo3 DDC" and "Voodoo3 I2C" instead?
> 

Just a choice. One other driver does it this way. I'll change to
the proposed names.

> > @@ -1284,7 +1468,9 @@ static int __devinit tdfxfb_probe(struct pci_dev
> *pdev,
> >  	if (hwcursor)
> >  		info->fix.smem_len = (info->fix.smem_len - 1024) >
> >  					(PAGE_MASK >> 1);
> > -
> > +#ifdef CONFIG_FB_3DFX_I2C
> > +	tdfxfb_create_i2c_busses(info);
> > +#endif
> >  	if (!mode_option)
> >  		mode_option = "640x480@60";
> >  
> 
> Later in this function, errors can occur which cause an error path to
> be taken. There you should call tdfxfb_delete_i2c_busses(par) otherwise
> you&#039;re leaking resources.
> 

ok.

> > diff --git a/include/video/tdfx.h b/include/video/tdfx.h
> > index 7431d96..bc37022 100644
> > --- a/include/video/tdfx.h
> > +++ b/include/video/tdfx.h
> > @@ -168,12 +183,21 @@ struct banshee_reg {
> >  	unsigned long miscinit0;
> >  };
> >  
> > +struct tdfx_par;
> > +
> > +struct tdfxfb_i2c_chan {
> > +	struct tdfx_par *par;
> > +	struct i2c_adapter adapter;
> > +	struct i2c_algo_bit_data algo;
> > +};
> > +
> >  struct tdfx_par {
> >  	u32 max_pixclock;
> >  	u32 palette[16];
> >  	void __iomem *regbase_virt;
> >  	unsigned long iobase;
> >  	int mtrr_handle;
> > +	struct tdfxfb_i2c_chan chan[2];
> 
> ... and this struct member if CONFIG_FB_3DFX_I2C is defined (same as
> intelfb and radeonfb are doing for example.)
> 

ok.

> 
> Other than these details, it looks OK to me. Please send an updated
> version addressing my comments and I&#039;ll be happy to ack it. I&#039;ve also
> tested the new code on my Voodoo3 and it worked just fine.
> 
> Was your code tested on a Voodoo5? The i2c-voodoo3 driver didn&#039;t claim
> to support it, so I wonder if it is compatible DDC/I2C-wise.
> 

It works on Voodoo5 at least.

> Next step is to deprecate i2c-voodoo3. This requires changes to
> drivers/i2c/busses/Kconfig and
> Documentation/feature-removal-schedule.txt. Are you going to do it or
> should I?
> 

I don't care. First, this patch must be accepted. 

Thank you,
Krzysztof

----------------------------------------------------------------------
Szukasz pieniedzy? Wez podwojny limit zadluzenia w koncie direct.
>> http://link.interia.pl/f20a3

             reply	other threads:[~2009-03-23 11:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-23 11:01 krzysztof.h1-IjDXvh/HVVUAvxtiuMwx3w [this message]
     [not found] ` <20090323110133.7CB7186118D-UW0e3zZ4DiCOitzWlErfBcT2TbGLZofU@public.gmane.org>
2009-03-23 12:18   ` [PATCH] tdfxfb: move I2C functionality into the tdfxfb Jean Delvare
  -- strict thread matches above, loose matches on Subject: below --
2009-03-23 12:50 krzysztof.h1-IjDXvh/HVVUAvxtiuMwx3w

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=20090323110133.7CB7186118D@f35.poczta.interia.pl \
    --to=krzysztof.h1-ijdxvh/hvvuavxtiumwx3w@public.gmane.org \
    --cc=khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org \
    --cc=linux-fbdev-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox