[RTEMS Project] #2483: raspberrypi: i2c driver can block task forever if compiled with #if I2C_IO_MODE == 1

RTEMS trac trac at rtems.org
Wed Dec 2 10:18:17 UTC 2015


#2483: raspberrypi: i2c driver can block task forever if compiled with #if
I2C_IO_MODE == 1
--------------------+------------------
 Reporter:  soja    |      Owner:
     Type:  defect  |     Status:  new
 Priority:  normal  |  Milestone:
Component:  bsps    |    Version:  4.12
 Severity:  normal  |   Keywords:
--------------------+------------------
 If the i2c driver is compiled with #if I2C_IO_MODE == 1 it uses a
 transient event send by an ISR to wait for space in the TX FIFO.

 The transient event is sent to the taskid which is stored in the structure
 for the corresponding bus (bus->task_id).
 However, this field is only set once in the rpi_i2c_register_bus-function.
 That means if a task other than the one which registered the bus wants to
 access it, it will block forever because the event is sent to the wrong
 one (the one which registered the bus).

--
Ticket URL: <http://devel.rtems.org/ticket/2483>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list