lm3s1968: replace switch-case statements with if-then-else.
authorarighi <arighi@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 13 Apr 2010 16:28:48 +0000 (16:28 +0000)
committerarighi <arighi@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 13 Apr 2010 16:28:48 +0000 (16:28 +0000)
Some old compilers may trigger (e.g., Sourcery G++ Lite 2008q3-66
4.3.2) may trigger some bugs with large switch-case.

git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3429 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/cpu/cortex-m3/drv/gpio_lm3s.c

index 653fd1e99e18676d9198507ffbf7fcd0630607bc..7fcecbad862bc78bb991d7054f6999eb0322fa7c 100644 (file)
 /* Set the pin(s) direction and mode */
 INLINE int lm3s_gpioPinConfigMode(uint32_t port, uint8_t pins, uint32_t mode)
 {
-       switch (mode)
+       if (mode == GPIO_DIR_MODE_IN)
        {
-       case GPIO_DIR_MODE_IN:
                HWREG(port + GPIO_O_DIR)   &= ~pins;
                HWREG(port + GPIO_O_AFSEL) &= ~pins;
-               break;
-       case GPIO_DIR_MODE_OUT:
+       }
+       else if (mode == GPIO_DIR_MODE_OUT)
+       {
                HWREG(port + GPIO_O_DIR)   |= pins;
                HWREG(port + GPIO_O_AFSEL) &= ~pins;
-               break;
-       case GPIO_DIR_MODE_HW:
+       }
+       else if (mode == GPIO_DIR_MODE_HW)
+       {
                HWREG(port + GPIO_O_DIR)   &= ~pins;
                HWREG(port + GPIO_O_AFSEL) |= pins;
-               break;
-       default:
+       }
+       else
+       {
                ASSERT(0);
                return -1;
        }
@@ -68,33 +70,36 @@ INLINE int lm3s_gpioPinConfigMode(uint32_t port, uint8_t pins, uint32_t mode)
 INLINE int
 lm3s_gpioPinConfigStrength(uint32_t port, uint8_t pins, uint32_t strength)
 {
-       switch (strength)
+       if (strength == GPIO_STRENGTH_2MA)
        {
-       case GPIO_STRENGTH_2MA:
                HWREG(port + GPIO_O_DR2R) |= pins;
                HWREG(port + GPIO_O_DR4R) &= ~pins;
                HWREG(port + GPIO_O_DR8R) &= ~pins;
                HWREG(port + GPIO_O_SLR)  &= ~pins;
-               break;
-       case GPIO_STRENGTH_4MA:
+       }
+       else if (strength == GPIO_STRENGTH_4MA)
+       {
                HWREG(port + GPIO_O_DR2R) &= ~pins;
                HWREG(port + GPIO_O_DR4R) |= pins;
                HWREG(port + GPIO_O_DR8R) &= ~pins;
                HWREG(port + GPIO_O_SLR)  &= ~pins;
-               break;
-       case GPIO_STRENGTH_8MA:
+       }
+       else if (strength == GPIO_STRENGTH_8MA)
+       {
                HWREG(port + GPIO_O_DR2R) &= ~pins;
                HWREG(port + GPIO_O_DR4R) &= ~pins;
                HWREG(port + GPIO_O_DR8R) |= pins;
                HWREG(port + GPIO_O_SLR)  &= ~pins;
-               break;
-       case GPIO_STRENGTH_8MA_SC:
+       }
+       else if (strength == GPIO_STRENGTH_8MA_SC)
+       {
                HWREG(port + GPIO_O_DR2R) &= ~pins;
                HWREG(port + GPIO_O_DR4R) &= ~pins;
                HWREG(port + GPIO_O_DR8R) |= pins;
                HWREG(port + GPIO_O_SLR)  |= pins;
-               break;
-       default:
+       }
+       else
+       {
                ASSERT(0);
                return -1;
        }
@@ -104,58 +109,64 @@ lm3s_gpioPinConfigStrength(uint32_t port, uint8_t pins, uint32_t strength)
 /* Set the pin(s) type */
 INLINE int lm3s_gpioPinConfigType(uint32_t port, uint8_t pins, uint32_t type)
 {
-       switch (type)
+       if (type == GPIO_PIN_TYPE_STD)
        {
-       case GPIO_PIN_TYPE_ANALOG:
-               HWREG(port + GPIO_O_ODR)   &= ~pins;
-               HWREG(port + GPIO_O_PUR)   &= ~pins;
-               HWREG(port + GPIO_O_PDR)   &= ~pins;
-               HWREG(port + GPIO_O_DEN)   &= ~pins;
-               HWREG(port + GPIO_O_AMSEL) |= pins;
-               break;
-       case GPIO_PIN_TYPE_STD:
                HWREG(port + GPIO_O_ODR)   &= ~pins;
                HWREG(port + GPIO_O_PUR)   &= ~pins;
                HWREG(port + GPIO_O_PDR)   &= ~pins;
                HWREG(port + GPIO_O_DEN)   |= pins;
                HWREG(port + GPIO_O_AMSEL) &= ~pins;
-               break;
-       case GPIO_PIN_TYPE_STD_WPU:
+       }
+       else if (type == GPIO_PIN_TYPE_STD_WPU)
+       {
                HWREG(port + GPIO_O_ODR)   &= ~pins;
                HWREG(port + GPIO_O_PUR)   |= pins;
                HWREG(port + GPIO_O_PDR)   &= ~pins;
                HWREG(port + GPIO_O_DEN)   |= pins;
                HWREG(port + GPIO_O_AMSEL) &= ~pins;
-               break;
-       case GPIO_PIN_TYPE_STD_WPD:
+       }
+       else if (type == GPIO_PIN_TYPE_STD_WPD)
+       {
                HWREG(port + GPIO_O_ODR)   &= ~pins;
                HWREG(port + GPIO_O_PUR)   &= ~pins;
                HWREG(port + GPIO_O_PDR)   |= pins;
                HWREG(port + GPIO_O_DEN)   |= pins;
                HWREG(port + GPIO_O_AMSEL) &= ~pins;
-               break;
-       case GPIO_PIN_TYPE_OD:
+       }
+       else if (type == GPIO_PIN_TYPE_OD)
+       {
                HWREG(port + GPIO_O_ODR)   |= pins;
                HWREG(port + GPIO_O_PUR)   &= ~pins;
                HWREG(port + GPIO_O_PDR)   &= ~pins;
                HWREG(port + GPIO_O_DEN)   |= pins;
                HWREG(port + GPIO_O_AMSEL) &= ~pins;
-               break;
-       case GPIO_PIN_TYPE_OD_WPU:
+       }
+       else if (type == GPIO_PIN_TYPE_OD_WPU)
+       {
                HWREG(port + GPIO_O_ODR)   |= pins;
                HWREG(port + GPIO_O_PUR)   |= pins;
                HWREG(port + GPIO_O_PDR)   &= ~pins;
                HWREG(port + GPIO_O_DEN)   |= pins;
                HWREG(port + GPIO_O_AMSEL) &= ~pins;
-               break;
-       case GPIO_PIN_TYPE_OD_WPD:
+       }
+       else if (type == GPIO_PIN_TYPE_OD_WPD)
+       {
                HWREG(port + GPIO_O_ODR)   |= pins;
                HWREG(port + GPIO_O_PUR)   &= pins;
                HWREG(port + GPIO_O_PDR)   |= pins;
                HWREG(port + GPIO_O_DEN)   |= pins;
                HWREG(port + GPIO_O_AMSEL) &= ~pins;
-               break;
-       default:
+       }
+       else if (type == GPIO_PIN_TYPE_ANALOG)
+       {
+               HWREG(port + GPIO_O_ODR)   &= ~pins;
+               HWREG(port + GPIO_O_PUR)   &= ~pins;
+               HWREG(port + GPIO_O_PDR)   &= ~pins;
+               HWREG(port + GPIO_O_DEN)   &= ~pins;
+               HWREG(port + GPIO_O_AMSEL) |= pins;
+       }
+       else
+       {
                ASSERT(0);
                return -1;
        }