[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1393719127.24160.YahooMailNeo@web164005.mail.gq1.yahoo.com>
Date: Sat, 1 Mar 2014 16:12:07 -0800 (PST)
From: Chase Southwood <chase.southwood@...oo.com>
To: Dan Carpenter <dan.carpenter@...cle.com>
Cc: "gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
"abbotti@....co.uk" <abbotti@....co.uk>,
"hsweeten@...ionengravers.com" <hsweeten@...ionengravers.com>,
"devel@...verdev.osuosl.org" <devel@...verdev.osuosl.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 1/2] Staging: comedi: introduce outl_1564_* and inl_1564_* helper functions in hwdrv_apci1564.c
Hi Dan,
>On Saturday, March 1, 2014 6:46 AM, Dan Carpenter <dan.carpenter@...cle.com> wrote:
>>On Sat, Mar 01, 2014 at 04:28:27AM -0600, Chase Southwood wrote:
>> This patch introduces a handful of outl and inl helper functions with the
>> ultimate goal of improving code readability and allowing several lines
>> which violate the character limit to be shortened in a sane way.
>>
>> Cc: Dan Carpenter <dan.carpenter@...cle.com>
>> Signed-off-by: Chase Southwood <chase.southwood@...oo.com>
>> ---
>> This patchset serves as a replacement to my previous cleanup patchset for
>> hwdrv_apci1564.c
>>
>> Dan,
>> After spending a little bit more time with this and trying out different
>> ways of cleaning this up, I decided that making helper functions for all
>> of the most common register sets would look the best, but I haven't made
>> a helper for a few of the least common inl/outl calls because if I did,
>> the sheer number of helper functions would get quite ridiculous.
>> Let me know if you think my selections of what to make into helper
>> functions seems appropriate.
>>
>
>Yeah. You're right... It's kind of a lot of helper functions.
>
>I wonder if we could just do something like:
>
>static void outl_amcc(struct addi_private *devpriv, unsigned int cmd,
> unsigned int reg)
>{
> outl(cmd, devpriv->i_IobaseAmcc + APCI1564_DIGITAL_IP + reg);
>}
>
>And then change APCI1564_DIGITAL_IP_INTERRUPT_MODE1 to be:
>
>#define APCI1564_DIGITAL_IP_INTERRUPT_MODE1 (0x4 + 0x4)
>
I like this idea. Just to clarify though, basically all of the macros would
change to something like
#define APCI1564_DIGITAL_IP 0x4 #define APCI1564_DIGITAL_IP_INTERRUPT_MODE1 (0x4 + 0x4) #define APCI1564_DIGITAL_IP_INTERRUPT_MODE2 (0x4 + 0x8) #define APCI1564_DIGITAL_IP_IRQ (0x4 + 0x10) #define APCI1564_DIGITAL_OP 0x18 #define APCI1564_DIGITAL_OP_RW 0x18 #define APCI1564_DIGITAL_OP_INTERRUPT (0x18 + 0x4) #define APCI1564_DIGITAL_OP_IRQ (0x18 + 0xc)
etc... and then we just have the single helper function
(the corrected version from your follow up email) and then
the calls would be something to the effect of:
outl_amcc(devpriv, cmd, APCI1564_DIGITAL_IP_INTERRUPT_MODE1);
or whichever macro is appropriate? It definitely trims down
the length of the function calls by removing the dereference of
devpriv and the addition to get the proper register...I like that.
>
>The only problem with that would be i_APCI1564_Reset(). Is
>i_APCI1564_Reset() buggy? Ian or Hartley might know. Take a look at
>other comedi drivers as well to see what they do.
>
I agree. I'll look into the other addi-data drivers (the layout of each
appears pretty similar) or see if Ian or Hartley can shed more light on the
reset function, because I have a sneaking suspicion that a good few of the lines
in it already are buggy, and it seems like there's a chance that it's not clearing
all of the registers that it should be, either. I could be wrong about that though.
At any rate, I'll see what I can do.
Thanks,
Chase
>
>regards,
>
>dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists