All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Vernon Mauery <vernux@us.ibm.com>
Cc: Randy Dunlap <rdunlap@xenotime.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Keith Mannthey <kmannth@us.ibm.com>
Subject: Re: [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v4
Date: Fri, 24 Sep 2010 15:12:39 +0200	[thread overview]
Message-ID: <201009241512.39311.arnd@arndb.de> (raw)
In-Reply-To: <20100923225346.GB4960@lucy>

On Friday 24 September 2010, Vernon Mauery wrote:
> +enum rtl_addr_type {
> +	RTL_ADDR_TYPE_IO = 1,
> +	RTL_ADDR_TYPE_MMIO,
> +} __attribute__((packed));
> +
> +enum rtl_cmd_type {
> +	RTL_CMD_NOP = 0,
> +	RTL_CMD_ENTER_PRTM,
> +	RTL_CMD_EXIT_PRTM,
> +} __attribute__((packed));

You didn't reply to Randy's comment about the packed attribute.
I think it's rather confusing here.

> +/* The RTL table as presented by the EBDA: */
> +struct ibm_rtl_table {
> +	char signature[5];
> +	u8 version;
> +	u8 rt_status;
> +	enum rtl_cmd_type command;
> +	u8 command_status;
> +	enum rtl_addr_type cmd_address_type;
> +	u8 cmd_granularity;
> +	u8 cmd_offset;
> +	u16 reserve1;
> +	u8 cmd_port_address[4]; /* platform dependent address */
> +	u8 cmd_port_value[4];   /* platform dependent value */
> +};

I would recommend marking the member in this structure as packed instead,
not the enum.

> +#define RTL_SIGNATURE (('L'<<24)|('T'<<16)|('R'<<8)|'_')
> +
> +#define ERROR(A, B...) printk(KERN_ERR "ibm-rtl: " A, ##B )
> +#define WARNING(A, B...) printk(KERN_WARNING "ibm-rtl: " A, ##B )
> +#define DEBUG(A, B...) do { \
> +	if (debug) \
> +		printk(KERN_INFO "ibm-rtl: " A, ##B ); \
> +} while (0)

We already have wrappers for these, no need to define your own.
Please just use dev_{err,warn,dbg} or pr_{err,warning,debug}.

> +static DEFINE_MUTEX(rtl_lock);
> +static struct ibm_rtl_table __iomem *rtl_table = NULL;
> +static void __iomem *ebda_map;
> +static void __iomem *rtl_cmd_iomem_addr = NULL;
> +static u32 rtl_cmd_port_addr;
> +static enum rtl_addr_type rtl_cmd_type;
> +static u8 rtl_cmd_width;

This is somewhat inconsistent, some of these are implicitly initialized,
others have an explicit "= NULL". I would recommend leaving out the
initialization, which is the historic way to do this in the kernel.

Some people find it cleaner to define a structure containing all the
driver specific data. Since there can be only one of these devices
in your case, it's probably not important.

> +			if (rtl_cmd_type == RTL_ADDR_TYPE_MMIO)
> +				iowrite8((u8)cmd_port_val, rtl_cmd_iomem_addr);
> +			else
> +				outb((u8)cmd_port_val, rtl_cmd_port_addr);

ioread/iowrite already has the capability to use both mmio and pio
addresses. You can use ioport_map() to create an __iomem token that
corresponds to your rtl_cmd_port_addr and get rid of the rtl_cmd_type
variable.

	Arnd

  reply	other threads:[~2010-09-24 13:12 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-21 22:46 [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v3 Vernon Mauery
2010-09-23 21:38 ` Randy Dunlap
2010-09-23 22:12   ` Vernon Mauery
2010-09-23 22:53     ` [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v4 Vernon Mauery
2010-09-24 13:12       ` Arnd Bergmann [this message]
2010-09-24 14:14         ` Vernon Mauery
2010-09-24 14:24           ` Arnd Bergmann
2010-09-24 16:56           ` Randy Dunlap
2010-09-24 21:06             ` [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v5 Vernon Mauery
2010-09-24 21:20               ` Randy Dunlap
2010-09-24 21:30                 ` Vernon Mauery
2010-09-24 21:35                   ` Randy Dunlap
2010-09-24 21:58                     ` [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v6 Vernon Mauery
2010-09-25  2:07                   ` [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v5 Henrique de Moraes Holschuh
2010-09-25 14:42                     ` [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v6 Vernon Mauery
2010-09-24 17:09           ` [RFC][Patch] IBM Real-Time "SMI Free" mode driver -v4 Vernon Mauery
2010-09-24 17:40             ` Arnd Bergmann
2010-09-24 18:23               ` Vernon Mauery
2010-09-24 20:40                 ` Arnd Bergmann
2010-09-24 20:45                 ` Vernon Mauery

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=201009241512.39311.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=kmannth@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdunlap@xenotime.net \
    --cc=vernux@us.ibm.com \
    /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.