mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-01 03:34:32 +02:00
Merge branch 'bugfix/gpio_set_level_atomic_v5.4' into 'release/v5.4'
fix(gpio): improve set level performance (v5.4) See merge request espressif/esp-idf!34764
This commit is contained in:
@@ -498,15 +498,15 @@ static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t
|
||||
{
|
||||
if (level) {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts = 1 << gpio_num;
|
||||
} else {
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(hw->out1_w1ts, data, (1 << (gpio_num - 32)));
|
||||
hw->out1_w1ts.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
} else {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc = 1 << gpio_num;
|
||||
} else {
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(hw->out1_w1tc, data, (1 << (gpio_num - 32)));
|
||||
hw->out1_w1tc.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -330,9 +330,9 @@ __attribute__((always_inline))
|
||||
static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t level)
|
||||
{
|
||||
if (level) {
|
||||
hw->out_w1ts.out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out_w1tc.out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc.val = 1 << gpio_num;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -339,9 +339,9 @@ __attribute__((always_inline))
|
||||
static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t level)
|
||||
{
|
||||
if (level) {
|
||||
hw->out_w1ts.out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out_w1tc.out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc.val = 1 << gpio_num;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -360,9 +360,9 @@ __attribute__((always_inline))
|
||||
static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t level)
|
||||
{
|
||||
if (level) {
|
||||
hw->out_w1ts.out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out_w1tc.out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc.val = 1 << gpio_num;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -332,9 +332,9 @@ __attribute__((always_inline))
|
||||
static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t level)
|
||||
{
|
||||
if (level) {
|
||||
hw->out_w1ts.out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out_w1tc.out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc.val = 1 << gpio_num;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -356,9 +356,9 @@ __attribute__((always_inline))
|
||||
static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t level)
|
||||
{
|
||||
if (level) {
|
||||
hw->out_w1ts.out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out_w1tc.out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc.val = 1 << gpio_num;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -377,9 +377,9 @@ __attribute__((always_inline))
|
||||
static inline void gpio_ll_set_level(gpio_dev_t *hw, gpio_num_t gpio_num, uint32_t level)
|
||||
{
|
||||
if (level) {
|
||||
hw->out_w1ts.out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out_w1tc.out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc.val = 1 << gpio_num;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -400,15 +400,15 @@ static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t
|
||||
{
|
||||
if (level) {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1ts.out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out1_w1ts.out1_w1ts = (1 << (gpio_num - 32));
|
||||
hw->out1_w1ts.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
} else {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1tc.out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc.val = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out1_w1tc.out1_w1tc = (1 << (gpio_num - 32));
|
||||
hw->out1_w1tc.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -338,15 +338,15 @@ static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t
|
||||
{
|
||||
if (level) {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out1_w1ts.data = (1 << (gpio_num - 32));
|
||||
hw->out1_w1ts.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
} else {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out1_w1tc.data = (1 << (gpio_num - 32));
|
||||
hw->out1_w1tc.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -354,15 +354,15 @@ static inline void gpio_ll_set_level(gpio_dev_t *hw, uint32_t gpio_num, uint32_t
|
||||
{
|
||||
if (level) {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1ts = (1 << gpio_num);
|
||||
hw->out_w1ts = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out1_w1ts.data = (1 << (gpio_num - 32));
|
||||
hw->out1_w1ts.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
} else {
|
||||
if (gpio_num < 32) {
|
||||
hw->out_w1tc = (1 << gpio_num);
|
||||
hw->out_w1tc = 1 << gpio_num;
|
||||
} else {
|
||||
hw->out1_w1tc.data = (1 << (gpio_num - 32));
|
||||
hw->out1_w1tc.val = 1 << (gpio_num - 32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user