Dirk Behme wrote:
> Remove I2C zero length transfer "HACK" and do real zero length 
> transfers. This fixes Oops at kernel startup while "scanning" for 
> TLV320AIC23IDx addresses.
> 
> Signed-off-by: Alexander Vasiliev <[EMAIL PROTECTED]>
> Signed-off-by: Brad Griffis <[EMAIL PROTECTED]>
> Signed-off-by: Dirk Behme <[EMAIL PROTECTED]>
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
> -static inline void terminate_write(struct davinci_i2c_dev *dev)
> -{
> -     u16 w = davinci_i2c_read_reg(dev, DAVINCI_I2C_MDR_REG);
> -     w |= DAVINCI_I2C_MDR_RM|DAVINCI_I2C_MDR_STP;
> -     davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, w);
> -
> -     if (!dev->terminate)
> -             dev_err(dev->dev, "TDR IRQ while no data to send\n");
> -}
>
>  /*
>   * Interrupt service routine. This gets called whenever an I2C interrupt
> @@ -449,6 +424,14 @@ static irqreturn_t i2c_davinci_isr(int t
>               case DAVINCI_I2C_IVR_ARDY:
>                       davinci_i2c_write_reg(dev,
>                               DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_ARDY);
> +                     if (((dev->buf_len == 0) && (dev->stop != 0)) ||
> +                         (dev->cmd_err & DAVINCI_I2C_STR_NACK)) {
> +                             w = davinci_i2c_read_reg(dev,
> +                                                      DAVINCI_I2C_MDR_REG);
> +                             MOD_REG_BIT(w, DAVINCI_I2C_MDR_STP, 1);
> +                             davinci_i2c_write_reg(dev,
> +                                                   DAVINCI_I2C_MDR_REG, w);
> +                     }
>                       complete(&dev->cmd_complete);
>                       break;
>
> @@ -484,9 +467,6 @@ static irqreturn_t i2c_davinci_isr(int t
>                               davinci_i2c_write_reg(dev,
>                                                     DAVINCI_I2C_IMR_REG,
>                                                     w);
> -                     } else {
> -                             /* signal can terminate transfer */
> -                             terminate_write(dev);
>                       }
Why remove terminate write??
Is it causing problems, or just no longer needed??


Troy
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to