Skip to content

Commit

Permalink
Optimize code by given feedback in PR.
Browse files Browse the repository at this point in the history
Optimized code for some target numbers which has same clock sources for all instances.

Signed-off-by: Furkan Akkiz <[email protected]>
  • Loading branch information
hfakkiz committed Nov 29, 2023
1 parent 97b390e commit d449d3b
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 101 deletions.
28 changes: 3 additions & 25 deletions Libraries/PeriphDrivers/Source/WDT/wdt_ai87.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,35 +160,13 @@ void MXC_WDT_ClearIntFlag(mxc_wdt_regs_t *wdt)

int MXC_WDT_SetClockSource(mxc_wdt_regs_t *wdt, mxc_wdt_clock_t clock_source)
{
const uint8_t clock_source_num = 8;
uint8_t idx = 0;
uint8_t instance = 0;
mxc_wdt_clock_t clock_sources[2][8] = {
{ MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK, MXC_WDT_INRO_CLK, MXC_WDT_ERTCO_CLK,
MXC_WDT_EXT_CLK, MXC_WDT_ERFO_CLK, 0xFF },
{ MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK, MXC_WDT_INRO_CLK, MXC_WDT_ERTCO_CLK,
MXC_WDT_EXT_CLK, MXC_WDT_ERFO_CLK, 0xFF }
};
const uint8_t last_clock_source = MXC_WDT_ERFO_CLK;

if (wdt == MXC_WDT0) {
instance = 0;
} else if (wdt == MXC_WDT1) {
instance = 1;
} else {
return E_BAD_PARAM;
}

for (idx = 0; idx < clock_source_num; idx++) {
if (clock_sources[instance][idx] == clock_source) {
break;
}
}

if (idx == clock_source_num) {
if ((clock_source < 0) || (clock_source > last_clock_source)) {
return E_BAD_PARAM;
}

MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, idx);
MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, (int)clock_source);

return E_NO_ERROR;
}
20 changes: 3 additions & 17 deletions Libraries/PeriphDrivers/Source/WDT/wdt_me12.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,27 +166,13 @@ void MXC_WDT_ClearIntFlag(mxc_wdt_regs_t *wdt)

int MXC_WDT_SetClockSource(mxc_wdt_regs_t *wdt, mxc_wdt_clock_t clock_source)
{
const uint8_t clock_source_num = 8;
uint8_t idx = 0;
mxc_wdt_clock_t clock_sources[1][8] = { { MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK,
MXC_WDT_NANO_CLK, MXC_WDT_ERTCO_CLK, MXC_WDT_EXT_CLK,
MXC_WDT_ERFO_CLK, 0xFF } };
const uint8_t last_clock_source = MXC_WDT_ERFO_CLK;

if (wdt != MXC_WDT0) {
if ((clock_source < 0) || (clock_source > last_clock_source)) {
return E_BAD_PARAM;
}

for (idx = 0; idx < clock_source_num; idx++) {
if (clock_sources[0][idx] == clock_source) {
break;
}
}

if (idx == clock_source_num) {
return E_BAD_PARAM;
}

MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, idx);
MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, (int)clock_source);

return E_NO_ERROR;
}
37 changes: 5 additions & 32 deletions Libraries/PeriphDrivers/Source/WDT/wdt_me15.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,46 +156,19 @@ void MXC_WDT_ClearIntFlag(mxc_wdt_regs_t *wdt)

int MXC_WDT_SetClockSource(mxc_wdt_regs_t *wdt, mxc_wdt_clock_t clock_source)
{
const uint8_t clock_source_num = 8;
uint8_t idx = 0;
uint8_t instance = 0;

#if TARGET_NUM == 32670
mxc_wdt_clock_t clock_sources[2][8] = {
{ MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK, MXC_WDT_INRO_CLK, MXC_WDT_ERTCO_CLK,
MXC_WDT_EXT_CLK, MXC_WDT_ERFO_CLK, 0xFF },
{ MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK, MXC_WDT_INRO_CLK, MXC_WDT_ERTCO_CLK,
MXC_WDT_EXT_CLK, MXC_WDT_ERFO_CLK, 0xFF }
};
const uint8_t last_clock_source = MXC_WDT_ERFO_CLK;
#elif TARGET_NUM == 32675
mxc_wdt_clock_t clock_sources[2][8] = { { MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK,
MXC_WDT_INRO_CLK, 0xFF, 0xFF, 0xFF, 0xFF },
{ MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK,
MXC_WDT_INRO_CLK, 0xFF, 0xFF, 0xFF, 0xFF } };
const uint8_t last_clock_source = MXC_WDT_INRO_CLK;
#else
mxc_wdt_clock_t clock_sources[2][8] = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } };
#error ME15 WDT driver does not support given target number.
#endif

if (wdt == MXC_WDT0) {
instance = 0;
} else if (wdt == MXC_WDT1) {
instance = 1;
} else {
return E_BAD_PARAM;
}

for (idx = 0; idx < clock_source_num; idx++) {
if (clock_sources[instance][idx] == clock_source) {
break;
}
}

if (idx == clock_source_num) {
if ((clock_source < 0) || (clock_source > last_clock_source)) {
return E_BAD_PARAM;
}

MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, idx);
MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, (int)clock_source);

return E_NO_ERROR;
}
3 changes: 1 addition & 2 deletions Libraries/PeriphDrivers/Source/WDT/wdt_me17.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,7 @@ int MXC_WDT_SetClockSource(mxc_wdt_regs_t *wdt, mxc_wdt_clock_t clock_source)
{ MXC_WDT_IBRO_CLK, 0xFF, MXC_WDT_INRO_CLK, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
};
#else
mxc_wdt_clock_t clock_sources[2][8] = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } };
#error ME17 WDT driver does not support given target number.
#endif

if (wdt == MXC_WDT0) {
Expand Down
28 changes: 3 additions & 25 deletions Libraries/PeriphDrivers/Source/WDT/wdt_me21.c
Original file line number Diff line number Diff line change
Expand Up @@ -156,35 +156,13 @@ void MXC_WDT_ClearIntFlag(mxc_wdt_regs_t *wdt)

int MXC_WDT_SetClockSource(mxc_wdt_regs_t *wdt, mxc_wdt_clock_t clock_source)
{
const uint8_t clock_source_num = 8;
uint8_t idx = 0;
uint8_t instance = 0;
mxc_wdt_clock_t clock_sources[2][8] = {
{ MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK, MXC_WDT_INRO_CLK, MXC_WDT_ERTCO_CLK,
MXC_WDT_EXT_CLK, MXC_WDT_ERFO_CLK, 0xFF },
{ MXC_WDT_PCLK, MXC_WDT_IPO_CLK, MXC_WDT_IBRO_CLK, MXC_WDT_INRO_CLK, MXC_WDT_ERTCO_CLK,
MXC_WDT_EXT_CLK, MXC_WDT_ERFO_CLK, 0xFF }
};
const uint8_t last_clock_source = MXC_WDT_ERFO_CLK;

if (wdt == MXC_WDT0) {
instance = 0;
} else if (wdt == MXC_WDT1) {
instance = 1;
} else {
return E_BAD_PARAM;
}

for (idx = 0; idx < clock_source_num; idx++) {
if (clock_sources[instance][idx] == clock_source) {
break;
}
}

if (idx == clock_source_num) {
if ((clock_source < 0) || (clock_source > last_clock_source)) {
return E_BAD_PARAM;
}

MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, idx);
MXC_WDT_RevB_SetClockSource((mxc_wdt_revb_regs_t *)wdt, (int)clock_source);

return E_NO_ERROR;
}

0 comments on commit d449d3b

Please sign in to comment.