3535 | S T A T I C V A R I A B L E S D E F I N I T I O N S
3636\*-------------------------------------------------------------------------------------------------*/
3737/* Driver Version */
38- static const ARM_DRIVER_VERSION DriverVersion = {
38+ static const ARM_DRIVER_VERSION DriverVersion =
39+ {
3940 OSP_GPIO_API_VERSION ,
4041 OSP_GPIO_DRV_VERSION
4142};
@@ -72,8 +73,7 @@ static int32_t OSP_GPIO_Initialize( void *gpio_priv )
7273 Chip_GPIO_Init ( LPC_GPIO );
7374
7475 /* Enable Pin interrupt sources */
75- Chip_PININT_Init ( NULL ); /* Note: input arg is ignored! */
76-
76+ Chip_PININT_Init ( NULL );
7777 return ARM_DRIVER_OK ;
7878}
7979
@@ -91,7 +91,7 @@ static int32_t OSP_GPIO_Uninitialize( void *gpio_priv )
9191 /* Uninitialize GPIO */
9292 Chip_GPIO_DeInit ( LPC_GPIO );
9393
94- Chip_PININT_DeInit ( NULL ); /* Note: input arg is ignored! */
94+ Chip_PININT_DeInit ( NULL );
9595 return ARM_DRIVER_OK ;
9696}
9797
@@ -109,16 +109,16 @@ static int32_t OSP_GPIO_PowerControl( ARM_POWER_STATE state, void *gpio_priv )
109109{
110110 switch ( state )
111111 {
112- case ARM_POWER_OFF :
113- Chip_GPIO_DeInit ( LPC_GPIO );
114- break ;
112+ case ARM_POWER_OFF :
113+ Chip_GPIO_DeInit ( LPC_GPIO );
114+ break ;
115115
116- case ARM_POWER_FULL :
117- Chip_GPIO_Init ( LPC_GPIO );
118- break ;
116+ case ARM_POWER_FULL :
117+ Chip_GPIO_Init ( LPC_GPIO );
118+ break ;
119119
120- default :
121- return ARM_DRIVER_ERROR_UNSUPPORTED ;
120+ default :
121+ return ARM_DRIVER_ERROR_UNSUPPORTED ;
122122 }
123123 return ARM_DRIVER_OK ;
124124}
@@ -127,7 +127,7 @@ static int32_t OSP_GPIO_PowerControl( ARM_POWER_STATE state, void *gpio_priv )
127127 * @fn OSP_GPIO_SetDirection
128128 * Set the direction of GPIO pin
129129 *
130- * @param pin Port pin number (Port and pin numbers encoded using ENCODE_PORT_PIN )
130+ * @param pin Port pin number (Upper 16-bit is port number and lower 16-bit is pin number )
131131 * @param dir Direction (GPIO_DIR_INPUT or GPIO_DIR_OUTPUT)
132132 * @param gpio_priv Private argument (Unused)
133133 *
@@ -145,15 +145,14 @@ static int32_t OSP_GPIO_SetDirection( uint32_t pin, uint32_t dir, void *gpio_pri
145145
146146 ( dir == ARM_GPIO_DIR_OUTPUT ) ? Chip_GPIO_SetPinDIROutput ( LPC_GPIO , port_num , pin_num ) : \
147147 Chip_GPIO_SetPinDIRInput ( LPC_GPIO , port_num , pin_num );
148-
149148 return ARM_DRIVER_OK ;
150149}
151150
152151/****************************************************************************************************
153152 * @fn OSP_GPIO_SetTrigger
154153 * Set the trigger mode for GPIO
155154 *
156- * @param pin Port pin number (Port and pin numbers encoded using ENCODE_PORT_PIN )
155+ * @param pin Port pin number (Upper 16-bit is port number and lower 16-bit is pin number )
157156 * @param trigger Trigger mode
158157 * @param gpio_priv Private argument (Unused)
159158 *
@@ -162,23 +161,22 @@ static int32_t OSP_GPIO_SetDirection( uint32_t pin, uint32_t dir, void *gpio_pri
162161 ***************************************************************************************************/
163162static int32_t OSP_GPIO_SetTrigger ( uint32_t pin , uint32_t trigger , void * gpio_priv )
164163{
165- uint32_t pinInterruptChannel = 0 ;
164+ uint8_t index = 0 ;
165+ uint8_t pinInterruptChannel = 0 ;
166166
167- switch (DECODE_PIN (pin ))
167+ ASF_assert ( pin != (PinName )NC );
168+
169+ for ( ; index < MAX_PIN_INTERRUPT_CHANNEL ; index ++ )
168170 {
169- case ACCEL_INT_PIN :
170- pinInterruptChannel = ACCEL_PINT_CH ;
171- break ;
172- case MAG_INT_PIN :
173- pinInterruptChannel = MAG_PINT_CH ;
174- break ;
175- case GYRO_INT_PIN :
176- pinInterruptChannel = GYRO_PINT_CH ;
171+ if ( GPIO_PinMap [index ].pin == pin )
172+ {
173+ pinInterruptChannel = GPIO_PinMap [index ].pinInterruptChannel ;
177174 break ;
178- default :
179- return ARM_DRIVER_ERROR_UNSUPPORTED ;
175+ }
180176 }
181177
178+ ASF_assert ( index < MAX_PIN_INTERRUPT_CHANNEL );
179+
182180 if ( trigger & (1 << ARM_GPIO_TRIGGER_EDGE ) )
183181 {
184182 Chip_PININT_SetPinModeEdge ( LPC_PININT , pinInterruptChannel ); /* edge sensitive */
@@ -203,7 +201,7 @@ static int32_t OSP_GPIO_SetTrigger( uint32_t pin, uint32_t trigger, void *gpio_p
203201 * @fn OSP_GPIO_WritePin
204202 * Set the GPIO Pin state
205203 *
206- * @param pin Port pin number (Port and pin numbers encoded using ENCODE_PORT_PIN )
204+ * @param pin Port pin number (Upper 16-bit is port number and lower 16-bit is pin number )
207205 * @param val Value to be written (0 or 1)
208206 * @param gpio_priv Private argument (Unused)
209207 *
@@ -227,7 +225,7 @@ static int32_t OSP_GPIO_WritePin( uint32_t pin, uint32_t val, void *gpio_priv )
227225 * @fn OSP_GPIO_ReadPin
228226 * Get the GPIO Pin value
229227 *
230- * @param pin Port pin number (Port and pin numbers encoded using ENCODE_PORT_PIN )
228+ * @param pin Port pin number (Upper 16-bit is port number and lower 16-bit is pin number )
231229 * @param gpio_priv Private argument (Unused)
232230 *
233231 * @return pin value
@@ -240,15 +238,15 @@ static int32_t OSP_GPIO_ReadPin( uint32_t pin, void *gpio_priv )
240238 ASF_assert ( pin != (PinName )NC );
241239 port_num = DECODE_PORT ( pin );
242240 pin_num = DECODE_PIN ( pin );
243-
241+
244242 return ( Chip_GPIO_ReadPortBit ( LPC_GPIO , port_num , pin_num ) );
245243}
246244
247245/****************************************************************************************************
248246 * @fn OSP_GPIO_SetHandler
249247 * Handler function
250248 *
251- * @param pin Port pin number (Port and pin numbers encoded using ENCODE_PORT_PIN )
249+ * @param pin Port pin number (Upper 16-bit is port number and lower 16-bit is pin number )
252250 * @param handler Pointer to handler function
253251 * @param data Data to pass to the handler
254252 * @param gpio_priv Private argument (Unused)
0 commit comments