All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Jamie Iles <jamie@jamieiles.com>
Cc: linux-kernel@vger.kernel.org, gregkh@suse.de, vapier@gentoo.org
Subject: Re: [RFC PATCHv2 1/4] drivers/otp: add initial support for OTP memory
Date: Fri, 25 Mar 2011 21:12:22 +0100	[thread overview]
Message-ID: <201103252112.22520.arnd@arndb.de> (raw)
In-Reply-To: <1300980071-24645-2-git-send-email-jamie@jamieiles.com>

On Thursday 24 March 2011 16:21:08 Jamie Iles wrote:
> OTP memory is typically found in some embedded devices and can be
> used for storing boot code, cryptographic keys and other persistent
> information onchip.  This patch adds a generic layer that devices can
> register OTP with and allows access through a set of character
> device nodes.

Looks very nice overall, but I have a few minor comments.

> diff --git a/Documentation/ABI/testing/sysfs-bus-otp b/Documentation/ABI/testing/sysfs-bus-otp
> new file mode 100644
> index 0000000..4dbc652
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-bus-otp
> @@ -0,0 +1,68 @@
> +What:           /sys/bus/otp/
> +Date:           March 2011
> +KernelVersion:  2.6.40+
> +Contact:        Jamie Iles <jamie@jamieiles.com>
> +Description:
> +                The otp bus presents a number of devices where each
> +		device represents a region or device in the SoC. Each region
> +		will create a device node which allows the region to be
> +		written with read()/write() calls and the device on the bus
> +		has attributes for controlling the redundancy format and
> +		getting the region size.

Why is this a bus? You don't have any device matching code or similar,
and the devices typically are on an existing bus_type (e.g. platform_bus).
I think it would make more sense to do this as a class.

> +
> +menuconfig OTP
> +	bool "OTP memory support"
> +	help
> +	  Say y here to support OTP memory found in some embedded devices.
> +	  This memory can commonly be used to store boot code, cryptographic
> +	  keys and other persistent data.

Please spell out OTP at least once here, a lot of people might not
know the TLA.

> +
> +static int otp_open(struct inode *inode, struct file *filp);
> +static int otp_release(struct inode *inode, struct file *filp);
> +static ssize_t otp_write(struct file *filp, const char __user *buf,
> +			 size_t len, loff_t *offs);
> +static ssize_t otp_read(struct file *filp, char __user *buf, size_t len,
> +			loff_t *offs);
> +static loff_t otp_llseek(struct file *filp, loff_t offs, int origin);
> +
> +static const struct file_operations otp_fops = {
> +	.owner	    = THIS_MODULE,
> +	.open	    = otp_open,
> +	.release    = otp_release,
> +	.write	    = otp_write,
> +	.read	    = otp_read,
> +	.llseek	    = otp_llseek,
> +};

The common way to organize source files is to put all definitions in an
order that requires no forward declarations.

Just define the operations first, then the struct file_operations, and
then the rest.

> +
> +static DEFINE_SEMAPHORE(otp_sem);

Semaphores are basically deprecated. Use a mutex instead.

> +static int otp_we, otp_strict_programming;
> +static struct otp_device *otp;
> +static dev_t otp_devno;

Making these global variables limits you to a single device. I think
you can put everything here into struct otp_device and find that from
the device or chardev you get passed when entering the otp code.

> +static void otp_dev_release(struct device *dev)
> +{
> +	struct otp_device *otp = to_otp_device(dev);
> +
> +	kfree(otp);
> +	otp = NULL;
> +}

The final assignment is not needed.

	Arnd

  parent reply	other threads:[~2011-03-25 20:12 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-24 15:21 [RFC PATCHv2 0/4] Support for OTP memory Jamie Iles
2011-03-24 15:21 ` [RFC PATCHv2 1/4] drivers/otp: add initial support " Jamie Iles
2011-03-24 18:32   ` Mike Frysinger
2011-03-24 20:35     ` Jamie Iles
2011-03-24 21:33       ` Mike Frysinger
2011-03-25 10:08         ` Jamie Iles
2011-03-25 21:32           ` Mike Frysinger
2011-03-25 22:27             ` Jamie Iles
2011-03-25 22:36               ` Mike Frysinger
2011-03-24 19:20   ` Greg KH
2011-03-24 20:49     ` Jamie Iles
2011-03-25 20:12   ` Arnd Bergmann [this message]
2011-03-25 21:12     ` Greg KH
2011-03-25 22:01       ` Arnd Bergmann
2011-03-25 23:28         ` Greg KH
2011-03-26 11:25           ` Arnd Bergmann
2011-03-26 15:10             ` Greg KH
2011-03-28 13:11               ` Arnd Bergmann
2011-03-25 22:23     ` Jamie Iles
2011-03-25 22:35       ` Arnd Bergmann
2011-03-25 22:38         ` Mike Frysinger
2011-03-25 22:52           ` Jamie Iles
2011-03-25 23:02             ` Arnd Bergmann
2011-03-26  0:21               ` Jamie Iles
2011-03-26  2:16                 ` Mike Frysinger
2011-03-26  2:40                   ` Jamie Iles
2011-03-26 10:54                   ` Arnd Bergmann
2011-03-26 17:55                     ` Mike Frysinger
2011-03-26 20:51                       ` Arnd Bergmann
2011-03-27  3:52                         ` Mike Frysinger
2011-03-27 11:18                           ` Arnd Bergmann
2011-03-25 22:53           ` Arnd Bergmann
2011-03-24 15:21 ` [RFC PATCHv2 2/4] drivers/otp: add support for Picoxcell PC3X3 OTP Jamie Iles
2011-03-24 18:50   ` Mike Frysinger
2011-03-24 20:59     ` Jamie Iles
2011-03-24 21:40       ` Mike Frysinger
2011-03-24 15:21 ` [RFC PATCHv2 3/4] drivers/otp: allow an ioctl to be specified Jamie Iles
2011-03-24 18:35   ` Mike Frysinger
2011-03-24 20:36     ` Jamie Iles
2011-03-24 15:21 ` [RFC PATCHv2 4/4] drivers/otp: convert bfin otp to generic OTP Jamie Iles
2011-03-24 18:52   ` Mike Frysinger
2011-03-24 20:40     ` Jamie Iles
2011-03-24 17:39 ` [RFC PATCHv2 0/4] Support for OTP memory Mike Frysinger
2011-03-24 17:47   ` Jamie Iles
2011-03-24 17:56     ` Mike Frysinger
2011-03-24 18:32       ` Jamie Iles
2011-03-24 18:36         ` Mike Frysinger
2011-03-24 20:38           ` Jamie Iles
2011-03-25  0:12         ` Mark Brown

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=201103252112.22520.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=gregkh@suse.de \
    --cc=jamie@jamieiles.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vapier@gentoo.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.