From: ryan@bluewatersys.com (Ryan Mallon)
To: linux-arm-kernel@lists.infradead.org
Subject: GPIO support for HTC Dream
Date: Wed, 09 Dec 2009 10:53:06 +1300 [thread overview]
Message-ID: <4B1ECAC2.5090009@bluewatersys.com> (raw)
In-Reply-To: <20091208213727.GA4164@elf.ucw.cz>
Pavel Machek wrote:
> Hi!
>
>>> +#undef MODULE_PARAM_PREFIX
>>> +#define MODULE_PARAM_PREFIX "board_dream."
>> This looks a bit dodgy. Is this
>> (http://lkml.indiana.edu/hypermail/linux/kernel/0903.0/02768.html) the
>> preferred way?
>
> I don't think that would help that much here....
Okay, but what is the reason for overriding MODULE_PARAM_PREFIX? Maybe a
comment explaining?
>>> +static void update_pwrsink(unsigned gpio, unsigned on)
>>> +{
>>> + switch(gpio) {
>>> + case DREAM_GPIO_UI_LED_EN:
>>> + break;
>>> + case DREAM_GPIO_QTKEY_LED_EN:
>>> + break;
>>> + }
>>> +}
>> What is this function for?
>
> Power accounting... should be removed. Fixed.
>
>>> +static void dream_gpio_irq_ack(unsigned int irq)
>>> +{
>>> + int bank = DREAM_INT_TO_BANK(irq);
>>> + uint8_t mask = DREAM_INT_TO_MASK(irq);
>>> + int reg = DREAM_BANK_TO_STAT_REG(bank);
>>> + /*printk(KERN_INFO "dream_gpio_irq_ack irq %d\n", irq);*/
>> pr_debug, or just remove it?
>
> Remove.
>
>>> + desc->chip->ack(irq);
>>> +}
>> Some blank lines here and there would make this more readable. All your
>> code is wedged together :-).
>
> Well, added some blank lines; not sure it is improvement.
This function was just an example, the patch lacked blank lines in
general. Squashed up code is hard to read.
>>> +#define DREAM_INT_TO_BANK(n) ((n - DREAM_INT_START) / DREAM_INT_BANK0_COUNT)
>>> +#define DREAM_INT_TO_MASK(n) (1U << ((n - DREAM_INT_START) & 7))
>>> +#define DREAM_BANK_TO_MASK_REG(bank) \
>>> + (bank ? DREAM_GPIO_INT_MASK1_REG : DREAM_GPIO_INT_MASK0_REG)
>>> +#define DREAM_BANK_TO_STAT_REG(bank) \
>>> + (bank ? DREAM_GPIO_INT_STAT1_REG : DREAM_GPIO_INT_STAT0_REG)
>> Are these needed outside of the gpiolib code? If not, they should be
>> moved there. I also think they should have lower case names since they
>> act like a function, and make the code where they are used nicer to
>> read.
>
> I guess these logically belong here.
>
> No, macros are macros, that means upcase.
container_of, min, swap, etc are macros too. It is easier to read this
if they are lower case because they are typically used for initialising
variables, ie:
int bank = dream_int_to_bank(irq);
Is easier (IMHO) to read than:
int bank = DREAM_INT_TO_BANK(irq);
>> Thats big, hard to read, has about 3 blank lines total and no comments.
>
> I tried to improve it, but it needs more. Here are my cleanups.
> Pavel
Looks better overall.
> diff --git a/arch/arm/mach-msm/board-dream.c b/arch/arm/mach-msm/board-dream.c
> index 4758957..3e8e54a 100644
> --- a/arch/arm/mach-msm/board-dream.c
> +++ b/arch/arm/mach-msm/board-dream.c
> @@ -59,6 +59,23 @@ static void __init dream_fixup(struct machine_desc *desc, struct tag *tags,
>
> static void __init dream_init(void)
> {
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> +
Indentation looks screwy here. Also, is this meant to blink the leds?
There is a 2.4 second hard delay here, which is horrible.
~Ryan
--
Bluewater Systems Ltd - ARM Technology Solution Centre
Ryan Mallon 5 Amuri Park, 404 Barbadoes St
ryan at bluewatersys.com PO Box 13 889, Christchurch 8013
http://www.bluewatersys.com New Zealand
Phone: +64 3 3779127 Freecall: Australia 1800 148 751
Fax: +64 3 3779135 USA 1800 261 2934
WARNING: multiple messages have this Message-ID (diff)
From: Ryan Mallon <ryan@bluewatersys.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Arve Hj?nnev?g <arve@android.com>,
kernel list <linux-kernel@vger.kernel.org>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
Brian Swetland <swetland@google.com>,
Daniel Walker <dwalker@codeaurora.org>,
Iliyan Malchev <malchev@google.com>
Subject: Re: GPIO support for HTC Dream
Date: Wed, 09 Dec 2009 10:53:06 +1300 [thread overview]
Message-ID: <4B1ECAC2.5090009@bluewatersys.com> (raw)
In-Reply-To: <20091208213727.GA4164@elf.ucw.cz>
Pavel Machek wrote:
> Hi!
>
>>> +#undef MODULE_PARAM_PREFIX
>>> +#define MODULE_PARAM_PREFIX "board_dream."
>> This looks a bit dodgy. Is this
>> (http://lkml.indiana.edu/hypermail/linux/kernel/0903.0/02768.html) the
>> preferred way?
>
> I don't think that would help that much here....
Okay, but what is the reason for overriding MODULE_PARAM_PREFIX? Maybe a
comment explaining?
>>> +static void update_pwrsink(unsigned gpio, unsigned on)
>>> +{
>>> + switch(gpio) {
>>> + case DREAM_GPIO_UI_LED_EN:
>>> + break;
>>> + case DREAM_GPIO_QTKEY_LED_EN:
>>> + break;
>>> + }
>>> +}
>> What is this function for?
>
> Power accounting... should be removed. Fixed.
>
>>> +static void dream_gpio_irq_ack(unsigned int irq)
>>> +{
>>> + int bank = DREAM_INT_TO_BANK(irq);
>>> + uint8_t mask = DREAM_INT_TO_MASK(irq);
>>> + int reg = DREAM_BANK_TO_STAT_REG(bank);
>>> + /*printk(KERN_INFO "dream_gpio_irq_ack irq %d\n", irq);*/
>> pr_debug, or just remove it?
>
> Remove.
>
>>> + desc->chip->ack(irq);
>>> +}
>> Some blank lines here and there would make this more readable. All your
>> code is wedged together :-).
>
> Well, added some blank lines; not sure it is improvement.
This function was just an example, the patch lacked blank lines in
general. Squashed up code is hard to read.
>>> +#define DREAM_INT_TO_BANK(n) ((n - DREAM_INT_START) / DREAM_INT_BANK0_COUNT)
>>> +#define DREAM_INT_TO_MASK(n) (1U << ((n - DREAM_INT_START) & 7))
>>> +#define DREAM_BANK_TO_MASK_REG(bank) \
>>> + (bank ? DREAM_GPIO_INT_MASK1_REG : DREAM_GPIO_INT_MASK0_REG)
>>> +#define DREAM_BANK_TO_STAT_REG(bank) \
>>> + (bank ? DREAM_GPIO_INT_STAT1_REG : DREAM_GPIO_INT_STAT0_REG)
>> Are these needed outside of the gpiolib code? If not, they should be
>> moved there. I also think they should have lower case names since they
>> act like a function, and make the code where they are used nicer to
>> read.
>
> I guess these logically belong here.
>
> No, macros are macros, that means upcase.
container_of, min, swap, etc are macros too. It is easier to read this
if they are lower case because they are typically used for initialising
variables, ie:
int bank = dream_int_to_bank(irq);
Is easier (IMHO) to read than:
int bank = DREAM_INT_TO_BANK(irq);
>> Thats big, hard to read, has about 3 blank lines total and no comments.
>
> I tried to improve it, but it needs more. Here are my cleanups.
> Pavel
Looks better overall.
> diff --git a/arch/arm/mach-msm/board-dream.c b/arch/arm/mach-msm/board-dream.c
> index 4758957..3e8e54a 100644
> --- a/arch/arm/mach-msm/board-dream.c
> +++ b/arch/arm/mach-msm/board-dream.c
> @@ -59,6 +59,23 @@ static void __init dream_fixup(struct machine_desc *desc, struct tag *tags,
>
> static void __init dream_init(void)
> {
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 1);
> + mdelay(300);
> + gpio_set_value(DREAM_GPIO_UI_LED_EN, 0);
> + mdelay(300);
> +
Indentation looks screwy here. Also, is this meant to blink the leds?
There is a 2.4 second hard delay here, which is horrible.
~Ryan
--
Bluewater Systems Ltd - ARM Technology Solution Centre
Ryan Mallon 5 Amuri Park, 404 Barbadoes St
ryan@bluewatersys.com PO Box 13 889, Christchurch 8013
http://www.bluewatersys.com New Zealand
Phone: +64 3 3779127 Freecall: Australia 1800 148 751
Fax: +64 3 3779135 USA 1800 261 2934
next prev parent reply other threads:[~2009-12-08 21:53 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-08 10:28 GPIO support for HTC Dream Pavel Machek
2009-12-08 10:28 ` Pavel Machek
2009-12-08 20:22 ` Ryan Mallon
2009-12-08 20:22 ` Ryan Mallon
2009-12-08 21:37 ` Pavel Machek
2009-12-08 21:37 ` Pavel Machek
2009-12-08 21:53 ` Ryan Mallon [this message]
2009-12-08 21:53 ` Ryan Mallon
2009-12-10 16:26 ` Pavel Machek
2009-12-10 16:26 ` Pavel Machek
2009-12-08 21:56 ` Arve Hjønnevåg
2009-12-08 21:56 ` Arve Hjønnevåg
2009-12-09 11:32 ` Pavel Machek
2009-12-09 11:32 ` Pavel Machek
2009-12-08 21:46 ` Pavel Machek
2009-12-08 21:46 ` Pavel Machek
2009-12-08 22:03 ` Joe Perches
2009-12-08 22:03 ` Joe Perches
2009-12-09 11:46 ` Pavel Machek
2009-12-09 11:46 ` Pavel Machek
2009-12-08 22:10 ` Ryan Mallon
2009-12-08 22:10 ` Ryan Mallon
2009-12-09 23:40 ` Ryan Mallon
2009-12-09 23:40 ` Ryan Mallon
2009-12-10 17:24 ` Pavel Machek
2009-12-10 17:24 ` Pavel Machek
2009-12-10 17:41 ` Mark Brown
2009-12-10 17:41 ` Mark Brown
2009-12-10 19:49 ` Ryan Mallon
2009-12-10 19:49 ` Ryan Mallon
2009-12-10 23:14 ` H Hartley Sweeten
2009-12-10 23:14 ` H Hartley Sweeten
2009-12-11 19:58 ` Pavel Machek
2009-12-11 19:58 ` Pavel Machek
2009-12-11 22:10 ` Pavel Machek
2009-12-11 22:10 ` Pavel Machek
2009-12-11 22:40 ` Arve Hjønnevåg
2009-12-11 22:40 ` Arve Hjønnevåg
2009-12-11 23:12 ` H Hartley Sweeten
2009-12-11 23:12 ` H Hartley Sweeten
2009-12-16 22:53 ` Pavel Machek
2009-12-16 22:53 ` Pavel Machek
2009-12-16 23:03 ` Daniel Walker
2009-12-16 23:03 ` Daniel Walker
2009-12-11 23:04 ` H Hartley Sweeten
2009-12-11 23:04 ` H Hartley Sweeten
2009-12-14 6:45 ` Pavel Machek
2009-12-14 6:45 ` Pavel Machek
2009-12-14 17:54 ` Daniel Walker
2009-12-14 17:54 ` Daniel Walker
2009-12-14 18:12 ` H Hartley Sweeten
2009-12-14 18:12 ` H Hartley Sweeten
2009-12-15 6:40 ` Arve Hjønnevåg
2009-12-15 6:40 ` Arve Hjønnevåg
2009-12-15 19:12 ` Pavel Machek
2009-12-15 19:12 ` Pavel Machek
2009-12-15 20:07 ` Daniel Walker
2009-12-15 20:07 ` Daniel Walker
2009-12-15 21:21 ` Pavel Machek
2009-12-15 21:21 ` Pavel Machek
2009-12-15 20:48 ` Jamie Lokier
2009-12-15 20:48 ` Jamie Lokier
2009-12-15 21:07 ` Brian Swetland
2009-12-15 21:07 ` Brian Swetland
2009-12-14 19:00 ` H Hartley Sweeten
2009-12-14 19:00 ` H Hartley Sweeten
2009-12-15 19:47 ` Pavel Machek
2009-12-15 19:47 ` Pavel Machek
2009-12-15 20:15 ` H Hartley Sweeten
2009-12-15 20:15 ` H Hartley Sweeten
2009-12-15 20:47 ` Pavel Machek
2009-12-15 20:47 ` Pavel Machek
2009-12-15 21:16 ` [patch] " Pavel Machek
2009-12-15 21:16 ` Pavel Machek
2009-12-25 17:10 ` Pavel Machek
2009-12-25 17:10 ` Pavel Machek
2009-12-25 23:49 ` Daniel Walker
2009-12-25 23:49 ` Daniel Walker
2009-12-26 8:51 ` Pavel Machek
2009-12-26 8:51 ` Pavel Machek
2009-12-15 20:24 ` Ryan Mallon
2009-12-15 20:24 ` Ryan Mallon
2009-12-15 20:44 ` Pavel Machek
2009-12-15 20:44 ` Pavel Machek
2009-12-15 6:48 ` Arve Hjønnevåg
2009-12-15 6:48 ` Arve Hjønnevåg
2009-12-11 23:28 ` Russell King - ARM Linux
2009-12-11 23:28 ` Russell King - ARM Linux
2009-12-11 23:50 ` H Hartley Sweeten
2009-12-11 23:50 ` H Hartley Sweeten
2009-12-14 6:24 ` Pavel Machek
2009-12-14 6:24 ` Pavel Machek
2009-12-10 16:57 ` Pavel Machek
2009-12-10 16:57 ` Pavel Machek
2009-12-08 22:45 ` Russell King - ARM Linux
2009-12-08 22:45 ` Russell King - ARM Linux
2009-12-09 0:39 ` Arve Hjønnevåg
2009-12-09 0:39 ` Arve Hjønnevåg
2009-12-09 11:37 ` Pavel Machek
2009-12-09 11:37 ` Pavel Machek
2009-12-09 11:42 ` Arve Hjønnevåg
2009-12-09 11:42 ` Arve Hjønnevåg
2009-12-10 16:27 ` Pavel Machek
2009-12-10 16:27 ` Pavel Machek
2009-12-09 16:18 ` Daniel Walker
2009-12-09 16:18 ` Daniel Walker
2009-12-13 21:29 ` Pavel Machek
2009-12-13 21:29 ` Pavel Machek
2009-12-13 21:38 ` Brian Swetland
2009-12-13 21:38 ` Brian Swetland
2009-12-15 19:09 ` Pavel Machek
2009-12-15 19:09 ` Pavel Machek
2009-12-14 17:40 ` Daniel Walker
2009-12-14 17:40 ` Daniel Walker
2009-12-15 19:10 ` Pavel Machek
2009-12-15 19:10 ` Pavel Machek
2009-12-09 11:41 ` Pavel Machek
2009-12-09 11:41 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B1ECAC2.5090009@bluewatersys.com \
--to=ryan@bluewatersys.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.