diff mbox

pwm: Fix compilation error when CONFIG_PWM is not defined

Message ID 1347343464-15417-1-git-send-email-tushar.behera@linaro.org
State Accepted
Commit 0bcf168b024871c64eb5df157739efd2ae9b0bdf
Headers show

Commit Message

Tushar Behera Sept. 11, 2012, 6:04 a.m. UTC
As per Documentation/pwm.txt, PWM_LOOKUP and pwm_add_table are used in
board support files to add PWM chip entries. Currently these
definitions are protected within CONFIG_PWM macro in
include/linux/pwm.h.

Otherwise, we have to add ifdef's in machine file to fix following
compilation error.

error: array type has incomplete element type
error: implicit declaration of function ‘PWM_LOOKUP’ [-Werror=implicit-function-declaration]
error: implicit declaration of function ‘pwm_add_table’ [-Werror=implicit-function-declaration]
error: bit-field ‘<anonymous>’ width not an integer constant

Reported-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
---
 include/linux/pwm.h |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

Comments

Thierry Reding Sept. 11, 2012, 6:19 a.m. UTC | #1
On Tue, Sep 11, 2012 at 11:34:24AM +0530, Tushar Behera wrote:
> As per Documentation/pwm.txt, PWM_LOOKUP and pwm_add_table are used in
> board support files to add PWM chip entries. Currently these
> definitions are protected within CONFIG_PWM macro in
> include/linux/pwm.h.
> 
> Otherwise, we have to add ifdef's in machine file to fix following
> compilation error.
> 
> error: array type has incomplete element type
> error: implicit declaration of function ‘PWM_LOOKUP’ [-Werror=implicit-function-declaration]
> error: implicit declaration of function ‘pwm_add_table’ [-Werror=implicit-function-declaration]
> error: bit-field ‘<anonymous>’ width not an integer constant

I think it would make more sense to have the board's Kconfig option
select PWM instead. After all if you're defining a lookup table you
probably want to use it as well.

Eventually I was going to rework the pwm.h a bit to safely compile
out if the PWM symbol is not selected, similar to how the GPIO or
clock subsystems do this. Something like your patch will be part of
that but more needs to be done. If you feel up to it, maybe you can
take this patch further and provide dummies for all the remaining
functions as well.

If you do that, one additional comment below.

> Reported-by: Sachin Kamat <sachin.kamat@linaro.org>
> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
> ---
>  include/linux/pwm.h |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
> index 21d076c..87e7f45 100644
> --- a/include/linux/pwm.h
> +++ b/include/linux/pwm.h
> @@ -124,6 +124,7 @@ struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
>  
>  struct pwm_device *pwm_get(struct device *dev, const char *consumer);
>  void pwm_put(struct pwm_device *pwm);
> +#endif
>  
>  struct pwm_lookup {
>  	struct list_head list;
> @@ -141,8 +142,10 @@ struct pwm_lookup {
>  		.con_id = _con_id,			\
>  	}
>  
> +#ifdef CONFIG_PWM
>  void pwm_add_table(struct pwm_lookup *table, size_t num);
> -
> +#else
> +static void pwm_add_table(struct pwm_lookup *table, size_t num) {}
>  #endif

This should be "static inline" and I prefer to have the {} on separate
lines.

Thierry
Tushar Behera Sept. 11, 2012, 8:35 a.m. UTC | #2
On 09/11/2012 11:49 AM, Thierry Reding wrote:
> On Tue, Sep 11, 2012 at 11:34:24AM +0530, Tushar Behera wrote:
>> As per Documentation/pwm.txt, PWM_LOOKUP and pwm_add_table are used in
>> board support files to add PWM chip entries. Currently these
>> definitions are protected within CONFIG_PWM macro in
>> include/linux/pwm.h.
>>
>> Otherwise, we have to add ifdef's in machine file to fix following
>> compilation error.
>>
>> error: array type has incomplete element type
>> error: implicit declaration of function ‘PWM_LOOKUP’ [-Werror=implicit-function-declaration]
>> error: implicit declaration of function ‘pwm_add_table’ [-Werror=implicit-function-declaration]
>> error: bit-field ‘<anonymous>’ width not an integer constant
> 
> I think it would make more sense to have the board's Kconfig option
> select PWM instead. After all if you're defining a lookup table you
> probably want to use it as well.
> 
> Eventually I was going to rework the pwm.h a bit to safely compile
> out if the PWM symbol is not selected, similar to how the GPIO or
> clock subsystems do this. Something like your patch will be part of
> that but more needs to be done. If you feel up to it, maybe you can
> take this patch further and provide dummies for all the remaining
> functions as well.
> 

Sure, I will extend the remaining APIs and resubmit.

> If you do that, one additional comment below.
> 
>> Reported-by: Sachin Kamat <sachin.kamat@linaro.org>
>> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
>> ---
>>  include/linux/pwm.h |    5 ++++-
>>  1 files changed, 4 insertions(+), 1 deletions(-)
>>
>> diff --git a/include/linux/pwm.h b/include/linux/pwm.h
>> index 21d076c..87e7f45 100644
>> --- a/include/linux/pwm.h
>> +++ b/include/linux/pwm.h
>> @@ -124,6 +124,7 @@ struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
>>  
>>  struct pwm_device *pwm_get(struct device *dev, const char *consumer);
>>  void pwm_put(struct pwm_device *pwm);
>> +#endif
>>  
>>  struct pwm_lookup {
>>  	struct list_head list;
>> @@ -141,8 +142,10 @@ struct pwm_lookup {
>>  		.con_id = _con_id,			\
>>  	}
>>  
>> +#ifdef CONFIG_PWM
>>  void pwm_add_table(struct pwm_lookup *table, size_t num);
>> -
>> +#else
>> +static void pwm_add_table(struct pwm_lookup *table, size_t num) {}
>>  #endif
> 
> This should be "static inline" and I prefer to have the {} on separate
> lines.
> 

Ok.

> Thierry
>
diff mbox

Patch

diff --git a/include/linux/pwm.h b/include/linux/pwm.h
index 21d076c..87e7f45 100644
--- a/include/linux/pwm.h
+++ b/include/linux/pwm.h
@@ -124,6 +124,7 @@  struct pwm_device *pwm_request_from_chip(struct pwm_chip *chip,
 
 struct pwm_device *pwm_get(struct device *dev, const char *consumer);
 void pwm_put(struct pwm_device *pwm);
+#endif
 
 struct pwm_lookup {
 	struct list_head list;
@@ -141,8 +142,10 @@  struct pwm_lookup {
 		.con_id = _con_id,			\
 	}
 
+#ifdef CONFIG_PWM
 void pwm_add_table(struct pwm_lookup *table, size_t num);
-
+#else
+static void pwm_add_table(struct pwm_lookup *table, size_t num) {}
 #endif
 
 #endif /* __LINUX_PWM_H */