On Mon, 30 Mar 2009 10:14:28 -0700
"Mark A. Greer" <mgr...@mvista.com> wrote:

> On Sat, Mar 28, 2009 at 11:33:58PM -0400, Hugo Villeneuve wrote:
> > On Sat, 28 Mar 2009 19:05:13 -0700
> > "Mark A. Greer" <mgr...@mvista.com> wrote:
> > 
> > > From: Mark A. Greer <mgr...@mvista.com>
> > > 
> > > Currently, there is one set of platform_device and platform_data
> > > structures for all DaVinci SoCs.  The differences in the data
> > > between the various SoCs is handled by davinci_serial_init()
> > > by checking the SoC type.  However, as new SoCs appear, this
> > > routine will become more & more cluttered.
> > > 
> > > To clean up the routine and make it easier to add support for new
> > > SoCs, move the platform_device and platform_data structures into
> > > the SoC-specific code and use the SoC infrastructure to provide
> > > access to the data.
> > 
> > Hi Mark,
> > In doing so, it seems you are re-introducing the bug that I fixed
> > in commit aeb81be782b838f96b1eca90ff49b217035b8461
> > 
> > Can you please check that and correct this patch?
> 
> Hi Hugo.
> 
> I thought I captured the essence of your patch.  Which, AFAICT, is to
> replace the 'p->flags = 0' with a 'continue' inside the check if the
> uart is enabled.

Partly true, there is more to it tought...

My patch has a static array containing the UART infos, and the a dynamic array 
which is filled based on the number of UARTs enabled.

p should be a pointer where to WRITE the platform data
i should be an index for READING static infos.

For example, your code will not work if you only enable UART0 and UART2:

i           p
===============================
0  dev->platform_data[0]  p points to UART0 data
1  dev->platform_data[1]  UART1 is not enabled, so p is not incremented 
(continue statement)
2  dev->platform_data[1]  Wrong, your p still point to UART1 data, not UART2

So if you want your patch to work, you simply have to define like I did:

static struct plat_serial8250_port serial_platform_data[DAVINCI_MAX_NR_UARTS + 
1];

and initialize your p pointer to point to it, and read static data from 
dev->platform_data[i].

Hugo v.

_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to