forked from Imagelibrary/rtems
bsp/lpc24xx: Evaluate LPC17XX pin type
New pin type LPC17XX_PIN_TYPE_OPEN_DRAIN.
This commit is contained in:
@@ -240,7 +240,8 @@ typedef enum {
|
|||||||
LPC17XX_PIN_TYPE_ADC,
|
LPC17XX_PIN_TYPE_ADC,
|
||||||
LPC17XX_PIN_TYPE_DAC,
|
LPC17XX_PIN_TYPE_DAC,
|
||||||
LPC17XX_PIN_TYPE_I2C,
|
LPC17XX_PIN_TYPE_I2C,
|
||||||
LPC17XX_PIN_TYPE_I2C_FAST_PLUS
|
LPC17XX_PIN_TYPE_I2C_FAST_PLUS,
|
||||||
|
LPC17XX_PIN_TYPE_OPEN_DRAIN
|
||||||
} lpc17xx_pin_type;
|
} lpc17xx_pin_type;
|
||||||
|
|
||||||
#ifdef ARM_MULTILIB_ARCH_V4
|
#ifdef ARM_MULTILIB_ARCH_V4
|
||||||
@@ -1102,8 +1103,10 @@ rtems_status_code lpc24xx_pin_config(
|
|||||||
LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_10, 2)
|
LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_10, 2)
|
||||||
#define LPC24XX_PIN_USB_SCL_1\
|
#define LPC24XX_PIN_USB_SCL_1\
|
||||||
LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 1)
|
LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 1)
|
||||||
#define LPC24XX_PIN_USB_SDA_1\
|
#define LPC24XX_PIN_USB_SDA_1 \
|
||||||
LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 1)
|
LPC24XX_PIN_WITH_TYPE( \
|
||||||
|
1, 29, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_OPEN_DRAIN \
|
||||||
|
)
|
||||||
#define LPC24XX_PIN_USB_CONNECT_1\
|
#define LPC24XX_PIN_USB_CONNECT_1\
|
||||||
LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_01, 1)
|
LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_01, 1)
|
||||||
|
|
||||||
|
|||||||
@@ -394,8 +394,21 @@ lpc24xx_pin_set_function(
|
|||||||
*pinsel = (*pinsel & ~pinsel_mask) | pinsel_value;
|
*pinsel = (*pinsel & ~pinsel_mask) | pinsel_value;
|
||||||
rtems_interrupt_enable(level);
|
rtems_interrupt_enable(level);
|
||||||
#else
|
#else
|
||||||
|
uint32_t iocon_extra = 0;
|
||||||
|
|
||||||
/* TODO */
|
/* TODO */
|
||||||
*iocon = IOCON_FUNC(pin_range.fields.function);
|
switch (pin_range.fields.type) {
|
||||||
|
case LPC17XX_PIN_TYPE_I2C_FAST_PLUS:
|
||||||
|
iocon_extra |= IOCON_HS;
|
||||||
|
break;
|
||||||
|
case LPC17XX_PIN_TYPE_OPEN_DRAIN:
|
||||||
|
iocon_extra |= IOCON_OD;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
*iocon = IOCON_FUNC(pin_range.fields.function) | iocon_extra;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
|
|||||||
Reference in New Issue
Block a user