[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AANLkTinLBbKaw=DwVFgORtQ=uA+zkF8QUUKj6uiqLaMw@mail.gmail.com>
Date: Fri, 25 Mar 2011 17:58:05 -0400
From: Mike Frysinger <vapier@...too.org>
To: Jamie Iles <jamie@...ieiles.com>
Cc: linux-kernel@...r.kernel.org, gregkh@...e.de
Subject: Re: [RFC PATCHv3 1/4] drivers/otp: add initial support for OTP memory
On Fri, Mar 25, 2011 at 13:14, Jamie Iles wrote:
> --- /dev/null
> +++ b/drivers/otp/Kconfig
> + may have different characterstics. This provides a character device
characterstics -> characteristics
> +if OTP
> +
> +config WRITE_ENABLE
> + bool "Enable writing support of OTP pages"
> + default n
> + help
does this show correctly in the kconfig by putting this under "if otp"
instead of "depends otp" ? it should show the write option indented
rather than at the same level.
> +/* We'll allow OTP devices to be named otpa-otpz. */
> +#define MAX_OTP_DEVICES 26
mmm is that still true ?
> +static unsigned long registered_otp_map[BITS_TO_LONGS(MAX_OTP_DEVICES)];
> +static DEFINE_MUTEX(otp_register_mutex);
do we really need this ? if we let the minor number dictate
availability, then we can increment until that errors/wraps, and we
dont need to do any tracking ...
> + if (fmt == OTP_REDUNDANCY_FMT_SINGLE_ENDED)
> + fmt_string = "single-ended";
> + else if (fmt == OTP_REDUNDANCY_FMT_REDUNDANT)
> + fmt_string = "redundant";
> + else if (fmt == OTP_REDUNDANCY_FMT_DIFFERENTIAL)
> + fmt_string = "differential";
> + else if (fmt == OTP_REDUNDANCY_FMT_DIFFERENTIAL_REDUNDANT)
> + fmt_string = "differential-redundant";
> + else if (fmt == OTP_REDUNDANCY_FMT_ECC)
> + fmt_string = "ecc";
> + else
> + return -EINVAL;
i wonder if the code would be simpler if we had a local static array.
then the show/store funcs would simply walk that tree, and when you
add a new format in the future, you only have to update one place.
static const char * const otp_redundancy_str[] = {
[OTP_REDUNDANCY_FMT_SINGLE_ENDED] = "single-ended",
[OTP_REDUNDANCY_FMT_REDUNDANT] = "redundant",
........
};
> +static ssize_t otp_num_regions_show(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + int nr_regions;
> +
> + nr_regions = otp_dev->ops->get_nr_regions(otp_dev);
> +
> + if (nr_regions < 0)
> + return (ssize_t)nr_regions;
we could make get_nr_regions() return a ssize_t ...
> + err = alloc_chrdev_region(&otp_dev->devno, 0, max_regions, "otp");
hmm, i was thinking that we'd have 1 major for otp devices. isnt this
how MTD does it ?
> --- /dev/null
> +++ b/include/linux/otp.h
> +/**
> + * enum otp_device_flags - Flags to indicate capabilities for the OTP device.
> + *
> + * @OTP_DEVICE_FNO_SUBWORD_WRITE: only full word sized writes may be
> + * performed. Don't use
> + * read-modify-write cycles for
> + * performing unaligned writes.
> + */
> +enum otp_device_flags {
> + OTP_DEVICE_FNO_SUBWORD_WRITE = (1 << 0),
> +};
use OTP_CAPS_xxx instead ?
-mike
--
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