Merge branch 'bugfix/gpio_set_level_atomic_v5.3' into 'release/v5.3'

fix(gpio): improve set level performance (v5.3)

See merge request espressif/esp-idf!34765
This commit is contained in:
Jiang Jiang Jian 2024-11-15 11:22:39 +08:00
commit d44e47e910
10 changed files with 28 additions and 28 deletions

View File

@ -483,15 +483,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);
}
}
}

View File

@ -314,9 +314,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;
}
}

View File

@ -326,9 +326,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;
}
}

View File

@ -351,9 +351,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;
}
}

View File

@ -319,9 +319,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;
}
}

View File

@ -321,9 +321,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;
}
}

View File

@ -363,9 +363,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;
}
}

View File

@ -386,15 +386,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);
}
}
}

View File

@ -326,15 +326,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);
}
}
}

View File

@ -342,15 +342,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);
}
}
}