jerpelea opened a new pull request, #20303:
URL: https://github.com/apache/nuttx/pull/20303

   ## Summary
   
   esp_i2c.c composes the pin attribute masks handed to esp_configgpio() using 
the logical OR operator instead of the bitwise OR operator:
   
       #define SCL_PIN_ATTR (FUNCTION_2 || INPUT_PULLUP || OUTPUT_OPEN_DRAIN)
       #define SDA_PIN_ATTR (FUNCTION_2 || INPUT_PULLUP || OUTPUT_OPEN_DRAIN)
   
   Every operand is a non-zero bit field, so the expression collapses to 1 
rather than to the intended combination.  With the encodings defined in 
esp_gpio.h the mask must be 171 (0xab):
   
       FUNCTION_2        (2 << FUNCTION_SHIFT) = 128
       INPUT_PULLUP      (INPUT | PULLUP)      = 9
       OUTPUT_OPEN_DRAIN (OUTPUT | OPEN_DRAIN) = 34
   
   Passing 1 to esp_configgpio() selects input mode only: output and open-drain 
remain disabled, the pull-up is not enabled and the function field does not 
match, so the pin falls back to plain GPIO function.  The I2C peripheral signal 
then never reaches the pads; the bus is left floating while the transfer state 
machine still reports completion.
   
   Every other pin attribute mask in this directory (esp_i2c_slave.c, 
esp_i2c_bitbang.c, esp_spi.c, esp_twai.c) already uses the bitwise operator for 
the same encodings, so esp_i2c.c was the only outlier.
   
   Since this file is modified by this commit, the pre-existing nxstyle 
violations reported by the check job are fixed as well, as asked in 
CONTRIBUTING.md section 2.1 (adapt all modified files even if you did not 
introduce the problem yourself):
   
   * esp_i2c.c:1267      - statement over-indented inside its enclosing
                           block (8 spaces where the block body is at 6)
   * esp_i2c.c:1303      - missing blank line after declarations
   * esp_i2c.c:1592      - missing blank line after declarations
   * esp_i2c.c:1710-1725 - 'case'/'default' labels inside switch(port)
                           sat at the same indent as the brace opening
                           the switch body; they belong one level further
                           in, with the case logic one more level in from
                           the label
   
   ## Impact
   
   RELEASE
   
   ## Testing
   
   CI


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to