All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hartley Sweeten <HartleyS@visionengravers.com>
To: Chase Southwood <chase.southwood@yahoo.com>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>
Cc: "abbotti@mev.co.uk" <abbotti@mev.co.uk>,
	"dan.carpenter@oracle.com" <dan.carpenter@oracle.com>,
	"devel@driverdev.osuosl.org" <devel@driverdev.osuosl.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH 1/2] Staging: comedi: introduce outl_1564_* and inl_1564_* helper functions in hwdrv_apci1564.c
Date: Mon, 3 Mar 2014 19:17:07 +0000	[thread overview]
Message-ID: <DC148C5AA1CEBA4E87973D432B1C2D8825D97CD8@P3PWEX4MB008.ex4.secureserver.net> (raw)
In-Reply-To: <1393669707-20107-1-git-send-email-chase.southwood@yahoo.com>

On Saturday, March 01, 2014 3:28 AM, Chase Southwood wrote:
> Subject: [PATCH 1/2] Staging: comedi: introduce outl_1564_* and inl_1564_* helper functions in hwdrv_apci1564.c
>
> 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@oracle.com>
> Signed-off-by: Chase Southwood <chase.southwood@yahoo.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.

Chase,

Sorry for jumping in here late.

I think if you just tidy up the register map defines it would help. Some of them
are actually used incorrectly anyway.

For instance, these two define the "base" offset for the digital input registers,
which is also to digital input register, and the offset from the "base" to the
interrupt mode1 register.

#define APCI1564_DIGITAL_IP				0x04
#define APCI1564_DIGITAL_IP_INTERRUPT_MODE1		4

One use of the APCI1564_DIGITAL_IP_INTERRUPT_MODE1 define is in
i_APCI1564_ConfigDigitalInput():

		outl(data[2],
			devpriv->i_IobaseAmcc + APCI1564_DIGITAL_IP +
			APCI1564_DIGITAL_IP_INTERRUPT_MODE1);

But in i_APCI1564_Reset () it is used as:

	outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DIGITAL_IP_INTERRUPT_MODE1);

So in the first example the driver is writing to a register at offset 0x08 (0x04 + 4) but
the second is writing to a register at offset 0x04 (4), which is really the digitial input
register.

I suggest you just fix the register map defines so they are the "real" offsets to each
register and not a mix of real offsets and adders to those offsets.

I would also rename them to help with the > 80 char lines.

Something like this:

/*
 * devpriv->i_IobaseAmcc Register map
 */
#define APCI1564_DI_REG					0x04
#define APCI1564_DI_INT_MODE1_REG			0x08
#define APCI1564_DI_INT_MODE2_REG			0x0c
#define APCI1564_DI_INT_STATUS_REG			0x10
#define APCI1564_DI_IRQ_REG				0x14
#define APCI1564_DO_REG					0x18
#define APCI1564_DO_INT_CTRL_REG			0x1c
#define APCI1564_DO_INT_STATUS_REG			0x20
#define APCI1564_DO_IRQ_REG				0x24
#define APCI1564_WDOG_REG				0x28
#define APCI1564_WDOG_RELOAD_REG			0x2c
#define APCI1564_WDOG_TIMEBASE_REG			0x30
#define APCI1564_WDOG_CTRL_REG				0x34
#define APCI1564_WDOG_STATUS_REG			0x38
#define APCI1564_WDOG_IRQ_REG				0x3c
#define APCI1564_WDOG_WARN_TIMEVAL_REG			0x40
#define APCI1564_WDOG_WARN_TIMEBASE_REG			0x44
#define APCI1564_TIMER_REG				0x48
#define APCI1564_TIMER_RELOAD_REG			0x4c
#define APCI1564_TIMER_TIMEBASE_REG			0x50
#define APCI1564_TIMER_CTRL_REG				0x54
#define APCI1564_TIMER_STATUS_REG			0x58
#define APCI1564_TIMER_IRQ_REG				0x5c
#define APCI1564_TIMER_WARN_TIMEVAL_REG			0x60
#define APCI1564_TIMER_WARN_TIMEBASE_REG		0x64

/*
 * devpriv->iobase Register map
 */
#define APCI1564_TCW_REG(x)				(0x00 + ((x) * 20))
#define APCI1564_TCW_RELOAD_REG(x)			(0x04 + ((x) * 20))
#define APCI1564_TCW_TIMEBASE_REG(x)			(0x08 + ((x) * 20))
#define APCI1564_TCW_CTRL_REG(x)			(0x0c + ((x) * 20))
#define APCI1564_TCW_STATUS_REG(x)			(0x10 + ((x) * 20))
#define APCI1564_TCW_IRQ_REG(x)				(0x14 + ((x) * 20))
#define APCI1564_TCW_WARN_TIMEVAL_REG(x)		(0x18 + ((x) * 20))
#define APCI1564_TCW_WARN_TIMEBASE_REG(x)		(0x1c + ((x) * 20))

You will probably want to split this into a couple patches to make reviewing
easier. Maybe do it by subdevice: digital input, digital output, watchdog, timer,
then the counters.

Regards,
Hartley


  parent reply	other threads:[~2014-03-03 19:17 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-28  7:31 [PATCH 1/2] Staging: comedi: addi-data: fix lines that are over 80 characters Chase Southwood
2014-02-28  7:32 ` [PATCH 2/2] Staging: comedi: addi-data: remove unnecessary variable initializations in hwdrv_apci1564.c Chase Southwood
2014-02-28  7:52 ` [PATCH 1/2] Staging: comedi: addi-data: fix lines that are over 80 characters Dan Carpenter
2014-02-28  7:56   ` Dan Carpenter
2014-02-28  8:03     ` Chase Southwood
2014-02-28  9:15 ` [PATCH 1/2 v2] Staging: comedi: " Chase Southwood
2014-02-28  9:42   ` Dan Carpenter
2014-02-28  9:53     ` Chase Southwood
2014-02-28 22:32   ` Greg KH
2014-03-01  5:32     ` Chase Southwood
2014-02-28  9:16 ` [PATCH 2/2 v2] Staging: comedi: addi-data: remove unnecessary variable initializations in hwdrv_apci1564.c Chase Southwood
2014-03-01 10:28 ` [PATCH 1/2] Staging: comedi: introduce outl_1564_* and inl_1564_* helper functions " Chase Southwood
2014-03-01 12:44   ` Dan Carpenter
2014-03-01 12:50     ` Dan Carpenter
2014-03-02  0:12     ` Chase Southwood
2014-03-02  0:26       ` Chase Southwood
2014-03-03  2:52   ` [PATCH v2 1/2] Staging: comedi: introduce {outl,inl}_amcc() and {outl,inl}_iobase() " Chase Southwood
2014-03-03  9:27     ` Dan Carpenter
2014-03-05  0:39       ` Greg KH
2014-03-05  5:35         ` Chase Southwood
2014-03-03  2:52   ` [PATCH v2 2/2] Staging: comedi: use inl() and outl() helper functions Chase Southwood
2014-03-03  9:40     ` Dan Carpenter
2014-03-03 19:17   ` Hartley Sweeten [this message]
2014-03-01 10:28 ` [PATCH 2/2] Staging: comedi: use outl_1564_* and inl_1564_* helper functions in hwdrv_apci1564.c Chase Southwood

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=DC148C5AA1CEBA4E87973D432B1C2D8825D97CD8@P3PWEX4MB008.ex4.secureserver.net \
    --to=hartleys@visionengravers.com \
    --cc=abbotti@mev.co.uk \
    --cc=chase.southwood@yahoo.com \
    --cc=dan.carpenter@oracle.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.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.