Re: [PATCH 00/34] omap drivers going upstream

2008-09-01 Thread Felipe Balbi
On Mon, Sep 01, 2008 at 03:22:23AM +0200, andrzej zaborowski wrote:
> 2008/9/1 Felipe Balbi <[EMAIL PROTECTED]>:
> > On Sat, Aug 30, 2008 at 08:16:00PM +0300, Felipe Balbi wrote:
> >> From: Felipe Balbi <[EMAIL PROTECTED]>
> >>
> >> The following drivers are going upstream for integration.
> >> They have been sitting on linux-omap for quite a while just
> >> increasing the diff against mainline and probability of
> >> merge conflicts.
> >
> > Just one comment to this. I had to left bluetooth driver out of the
> > series because it's using omap2_block/allow_sleep in the driver code.
> > That should be fixed and the set_clock function should come via
> > platform_data to the driver.
> >
> >  53 static void hci_h4p_set_clk(struct hci_h4p_info *info, int *clock, int 
> > enable)
> >  54 {
> >  55 unsigned long flags;
> >  56
> >  57 spin_lock_irqsave(&info->clocks_lock, flags);
> >  58 if (enable && !*clock) {
> >  59 NBT_DBG_POWER("Enabling %p\n", clock);
> >  60 clk_enable(info->uart_fclk);
> >  61 #ifdef CONFIG_ARCH_OMAP2
> >  62 if (cpu_is_omap24xx()) {
> >  63 clk_enable(info->uart_iclk);
> >  64 omap2_block_sleep();
> >  65 }
> >  66 #endif
> >  67 }
> >  68 if (!enable && *clock) {
> >  69 NBT_DBG_POWER("Disabling %p\n", clock);
> >  70 clk_disable(info->uart_fclk);
> >  71 #ifdef CONFIG_ARCH_OMAP2
> >  72 if (cpu_is_omap24xx()) {
> >  73 clk_disable(info->uart_iclk);
> >  74 omap2_allow_sleep();
> >  75 }
> >  76 #endif
> >  77 }
> >  78
> >  79 *clock = enable;
> >  80 spin_unlock_irqrestore(&info->clocks_lock, flags);
> >  81 }
> >
> > That driver is full of arch specific code and should be cleaned up ASAP.
> >
> > A few things I could get by briefly looking at the driver (actualy only
> > drivers/bluetooth/hci_h4p/core.c):
> 
> There's also a curious issue in hci_h4p_interrupt I hit recently but
> after looking at the rest of the driver thought it was beating a dead
> horse..., but just in case it isn't:
> the driver assumes the OMAP UART, but then it uses UART_IIR_ID which
> is only valid for standard UARTs, causing OMAP-specific Rx errors to
> be ignored silently.  Turns out that on my N810 there are actually Rx
> errors reported during firmware upload, but I didn't find a better way
> to handle them than to ignore them:
> 
> --- a/drivers/bluetooth/hci_h4p/core.c
> +++ b/drivers/bluetooth/hci_h4p/core.c
> @@ -482,7 +491,14 @@ static irqreturn_t hci_h4p_interrupt(int irq, void *data)
> 
> NBT_DBG("In interrupt handler iir 0x%.2x\n", iir);
> 
> -   iir &= UART_IIR_ID;
> +   iir &= 0x1e; /* OMAP UART has wider INT than UART_IIR_ID */
> +
> +   /*
> +* Often Rx errors are reported but reading the receive buffer
> +* gives the correct data, so treat it as an Rx interrupt.
> +*/
> +   if (iir == 0xc)
> +   iir = 0x4;
> 
> if (iir == UART_IIR_MSI) {
> msr = hci_h4p_inb(info, UART_MSR);
> 
> The tsc210x drivers should be upstreamable with the exception of ALSA
> code which needs to be converted to ASoC.  Maruk Vasut found a leak in
> one error path, but I can't charge the device that has the tsc2102
> that I used for testing.
> 
> I have some improvements to drivers/net/irda/omap-ir.c (clean-up and
> removing OMAP16xx specific bits to support OMAP1) but again, have no
> charger for the device.

Let's put Ville on the loop as he might be interested in it. Ville, any
comments ?

-- 
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/34] omap drivers going upstream

2008-08-31 Thread andrzej zaborowski
2008/8/30 Felipe Balbi <[EMAIL PROTECTED]>:

>  Add omap touchscreen driver

This is just a tsc2101 touchscreen + pin multiplexing, I'm not really
sure it should be upstream (but don't drop it without someone who
knows commenting). I think someone even experimented with using a
tsc2101 driver on the Hx board, but I may be wrong.
Regards
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/34] omap drivers going upstream

2008-08-31 Thread andrzej zaborowski
2008/9/1 Felipe Balbi <[EMAIL PROTECTED]>:
> On Sat, Aug 30, 2008 at 08:16:00PM +0300, Felipe Balbi wrote:
>> From: Felipe Balbi <[EMAIL PROTECTED]>
>>
>> The following drivers are going upstream for integration.
>> They have been sitting on linux-omap for quite a while just
>> increasing the diff against mainline and probability of
>> merge conflicts.
>
> Just one comment to this. I had to left bluetooth driver out of the
> series because it's using omap2_block/allow_sleep in the driver code.
> That should be fixed and the set_clock function should come via
> platform_data to the driver.
>
>  53 static void hci_h4p_set_clk(struct hci_h4p_info *info, int *clock, int 
> enable)
>  54 {
>  55 unsigned long flags;
>  56
>  57 spin_lock_irqsave(&info->clocks_lock, flags);
>  58 if (enable && !*clock) {
>  59 NBT_DBG_POWER("Enabling %p\n", clock);
>  60 clk_enable(info->uart_fclk);
>  61 #ifdef CONFIG_ARCH_OMAP2
>  62 if (cpu_is_omap24xx()) {
>  63 clk_enable(info->uart_iclk);
>  64 omap2_block_sleep();
>  65 }
>  66 #endif
>  67 }
>  68 if (!enable && *clock) {
>  69 NBT_DBG_POWER("Disabling %p\n", clock);
>  70 clk_disable(info->uart_fclk);
>  71 #ifdef CONFIG_ARCH_OMAP2
>  72 if (cpu_is_omap24xx()) {
>  73 clk_disable(info->uart_iclk);
>  74 omap2_allow_sleep();
>  75 }
>  76 #endif
>  77 }
>  78
>  79 *clock = enable;
>  80 spin_unlock_irqrestore(&info->clocks_lock, flags);
>  81 }
>
> That driver is full of arch specific code and should be cleaned up ASAP.
>
> A few things I could get by briefly looking at the driver (actualy only
> drivers/bluetooth/hci_h4p/core.c):

There's also a curious issue in hci_h4p_interrupt I hit recently but
after looking at the rest of the driver thought it was beating a dead
horse..., but just in case it isn't:
the driver assumes the OMAP UART, but then it uses UART_IIR_ID which
is only valid for standard UARTs, causing OMAP-specific Rx errors to
be ignored silently.  Turns out that on my N810 there are actually Rx
errors reported during firmware upload, but I didn't find a better way
to handle them than to ignore them:

--- a/drivers/bluetooth/hci_h4p/core.c
+++ b/drivers/bluetooth/hci_h4p/core.c
@@ -482,7 +491,14 @@ static irqreturn_t hci_h4p_interrupt(int irq, void *data)

NBT_DBG("In interrupt handler iir 0x%.2x\n", iir);

-   iir &= UART_IIR_ID;
+   iir &= 0x1e; /* OMAP UART has wider INT than UART_IIR_ID */
+
+   /*
+* Often Rx errors are reported but reading the receive buffer
+* gives the correct data, so treat it as an Rx interrupt.
+*/
+   if (iir == 0xc)
+   iir = 0x4;

if (iir == UART_IIR_MSI) {
msr = hci_h4p_inb(info, UART_MSR);

The tsc210x drivers should be upstreamable with the exception of ALSA
code which needs to be converted to ASoC.  Maruk Vasut found a leak in
one error path, but I can't charge the device that has the tsc2102
that I used for testing.

I have some improvements to drivers/net/irda/omap-ir.c (clean-up and
removing OMAP16xx specific bits to support OMAP1) but again, have no
charger for the device.

Thanks
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/34] omap drivers going upstream

2008-08-31 Thread Felipe Balbi
On Mon, Sep 01, 2008 at 01:37:37AM +0300, Felipe Balbi wrote:
> On Sat, Aug 30, 2008 at 08:16:00PM +0300, Felipe Balbi wrote:
> > From: Felipe Balbi <[EMAIL PROTECTED]>
> > 
> > The following drivers are going upstream for integration.
> > They have been sitting on linux-omap for quite a while just
> > increasing the diff against mainline and probability of
> > merge conflicts.
> 
> Just one comment to this. I had to left bluetooth driver out of the

typo, 'I had to leave'

-- 
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/34] omap drivers going upstream

2008-08-31 Thread Felipe Balbi
On Sat, Aug 30, 2008 at 08:16:00PM +0300, Felipe Balbi wrote:
> From: Felipe Balbi <[EMAIL PROTECTED]>
> 
> The following drivers are going upstream for integration.
> They have been sitting on linux-omap for quite a while just
> increasing the diff against mainline and probability of
> merge conflicts.

Just one comment to this. I had to left bluetooth driver out of the
series because it's using omap2_block/allow_sleep in the driver code.
That should be fixed and the set_clock function should come via
platform_data to the driver.

  53 static void hci_h4p_set_clk(struct hci_h4p_info *info, int *clock, int 
enable)
  54 {
  55 unsigned long flags;
  56 
  57 spin_lock_irqsave(&info->clocks_lock, flags);
  58 if (enable && !*clock) {
  59 NBT_DBG_POWER("Enabling %p\n", clock);
  60 clk_enable(info->uart_fclk);
  61 #ifdef CONFIG_ARCH_OMAP2
  62 if (cpu_is_omap24xx()) {
  63 clk_enable(info->uart_iclk);
  64 omap2_block_sleep();
  65 }
  66 #endif
  67 }
  68 if (!enable && *clock) {
  69 NBT_DBG_POWER("Disabling %p\n", clock);
  70 clk_disable(info->uart_fclk);
  71 #ifdef CONFIG_ARCH_OMAP2
  72 if (cpu_is_omap24xx()) {
  73 clk_disable(info->uart_iclk);
  74 omap2_allow_sleep();
  75 }
  76 #endif
  77 }
  78 
  79 *clock = enable;
  80 spin_unlock_irqrestore(&info->clocks_lock, flags);
  81 }

That driver is full of arch specific code and should be cleaned up ASAP.

A few things I could get by briefly looking at the driver (actualy only
drivers/bluetooth/hci_h4p/core.c):

* set_clock should come via platform_data
* gpio handling should use gpiolib instead of omap-specific ones
* irq should come via platform_data to avoid 'if (cpu_is_xxx())'
* unnecessary casts should be removed
* one line ifs do not need {}
* there's a memory leak on probe if no platform_data is found
* use of io_p2v() should be avoided on drivers, refer to Russel King's
  patch
* OMAP_GPIO_IRQ() should not be used on the driver.

-- 
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html