On Fri, Sep 03, 2010 at 01:36:13PM +0100, Alan Cox wrote:
> > +config PCH_I2C_CH_COUNT
> > +   int "PCH I2C the number of channel count"
> > +   range 1 2
> > +   depends on PCH_I2C
> > +   help
> > +     This driver is for PCH(Platform controller Hub) I2C of Topcliff which
> > +     is an IOH(Input/Output Hub) for x86 embedded processor.
> > +     The number of I2C buses/channels supported by the PCH I2C controller.
> > +     PCH I2C of Topcliff supports only one channel.
> 
> These sort of settings need to be runtime so one kernel can be built for
> many platform variants. In this case if I understand correctly the
> current device only has one channel so the define could just be moved
> into the driver for now and made a variable later as/when/if new hardware
> with more channels appears.
> 
> 
> 
> > +static s32 pch_wait_for_xfer_complete(struct i2c_algo_pch_data *adap)
> > +{
> > +   s32 ret;
> > +   ret = wait_event_interruptible_timeout(pch_event,
> > +                   (adap->pch_event_flag != 0), msecs_to_jiffies(50));
> > +   if (ret < 0) {
> > +           pch_err(adap, "timeout: %x\n", adap->pch_event_flag);
> > +           return ret;
> > +   }
> 
> You are reporting a timeout when _interruptible can also be woken by a
> signal to the process (eg the user hitting ^C)

Sidenote: a number of embedded drivers decided to switch to
wait_event_timeout() recently because reacting to a signal may have
subtle issues and must be carefully implemented and tested. Stalled
busses were often the consequence. I don't know if this applies here but
better keep it in mind.

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

Attachment: signature.asc
Description: Digital signature

Reply via email to