[PATCH v4 6/7] IIO: add STM32 timer trigger driver
From: Daniel Thompson <hidden>
Date: 2016-12-07 12:02:28
Also in:
linux-devicetree, linux-iio, linux-pwm, lkml
On 07/12/16 11:00, Benjamin Gaignard wrote:
2016-12-07 11:50 GMT+01:00 Lee Jones [off-list ref]:quoted
On Tue, 06 Dec 2016, Benjamin Gaignard wrote:quoted
[snip]quoted
quoted
+ +static const char * const triggers0[] = { + TIM1_TRGO, TIM1_CH1, TIM1_CH2, TIM1_CH3, TIM1_CH4, NULL, +}; + +static const char * const triggers1[] = { + TIM2_TRGO, TIM2_CH1, TIM2_CH2, TIM2_CH3, TIM2_CH4, NULL, +}; + +static const char * const triggers2[] = { + TIM3_TRGO, TIM3_CH1, TIM3_CH2, TIM3_CH3, TIM3_CH4, NULL, +}; + +static const char * const triggers3[] = { + TIM4_TRGO, TIM4_CH1, TIM4_CH2, TIM4_CH3, TIM4_CH4, NULL, +}; + +static const char * const triggers4[] = { + TIM5_TRGO, TIM5_CH1, TIM5_CH2, TIM5_CH3, TIM5_CH4, NULL, +}; + +static const char * const triggers5[] = { + TIM6_TRGO, NULL, +}; + +static const char * const triggers6[] = { + TIM7_TRGO, NULL, +}; + +static const char * const triggers7[] = { + TIM8_TRGO, TIM8_CH1, TIM8_CH2, TIM8_CH3, TIM8_CH4, NULL, +}; + +static const char * const triggers8[] = { + TIM9_TRGO, TIM9_CH1, TIM9_CH2, NULL, +}; + +static const char * const triggers9[] = { + TIM12_TRGO, TIM12_CH1, TIM12_CH2, NULL, +}; + +static const void *triggers_table[] = { + triggers0, + triggers1, + triggers2, + triggers3, + triggers4, + triggers5, + triggers6, + triggers7, + triggers8, + triggers9, +};What about: static const char * const triggers[][] = { { TIM1_TRGO, TIM1_CH1, TIM1_CH2, TIM1_CH3, TIM1_CH4, NULL }, { TIM2_TRGO, TIM2_CH1, TIM2_CH2, TIM2_CH3, TIM2_CH4, NULL }, { TIM3_TRGO, TIM3_CH1, TIM3_CH2, TIM3_CH3, TIM3_CH4, NULL }, { TIM4_TRGO, TIM4_CH1, TIM4_CH2, TIM4_CH3, TIM4_CH4, NULL }, { TIM5_TRGO, TIM5_CH1, TIM5_CH2, TIM5_CH3, TIM5_CH4, NULL }, { TIM6_TRGO, NULL }, { TIM7_TRGO, NULL }, { TIM8_TRGO, TIM8_CH1, TIM8_CH2, TIM8_CH3, TIM8_CH4, NULL }, { TIM9_TRGO, TIM9_CH1, TIM9_CH2, NULL }, { TIM12_TRGO, TIM12_CH1, TIM12_CH2, NULL } };I can't because the second dimension of the array isn't fix. I could have between 2 and 6 elements per row... to create a dual dimension array I would have to add NULL entries like that: #define MAX_TRIGGERS 6 static const void *triggers_table[][MAX_TRIGGERS] = { { TIM1_TRGO, TIM1_CH1, TIM1_CH2, TIM1_CH3, TIM1_CH4, NULL,}, { TIM2_TRGO, TIM2_CH1, TIM2_CH2, TIM2_CH3, TIM2_CH4, NULL,}, { TIM3_TRGO, TIM3_CH1, TIM3_CH2, TIM3_CH3, TIM3_CH4, NULL,}, { TIM4_TRGO, TIM4_CH1, TIM4_CH2, TIM4_CH3, TIM4_CH4, NULL,}, { TIM5_TRGO, TIM5_CH1, TIM5_CH2, TIM5_CH3, TIM5_CH4, NULL,}, { TIM6_TRGO, NULL, NULL, NULL, NULL, NULL,}, { TIM7_TRGO, NULL, NULL, NULL, NULL, NULL,}, { TIM8_TRGO, TIM8_CH1, TIM8_CH2, TIM8_CH3, TIM8_CH4, NULL,}, { TIM9_TRGO, TIM9_CH1, TIM9_CH2, NULL, NULL, NULL,}, { TIM12_TRGO, TIM12_CH1, TIM12_CH2, NULL, NULL, NULL,}, };It was just an idea, not a tested implementation. I don't understand why you have to pad with NULLs, but either way, it looks much better than before and saves lots of lines of code.I have tested it this morning and it works fine so I will include it in v5. I use NULL as limit when iterate in the table and for table padding too.
If the initializer is shorter than the array then the array will be implicitly zero/NULL padded. I don't think there is any need to type out all the NULLs (not even at -Wall). Daniel.