On Mon, Aug 24, 2009 at 04:45:50PM +0200, Jarkko Nikula wrote: > On Mon, 24 Aug 2009 10:34:22 +0300 > Eduardo Valentin <eduardo.valentin@xxxxxxxxx> wrote: > > > > Are there need for case insensitive check? The sysfs_streq is not. > > > > Yes, sysfs_streq is not. There is no need for the insensitive, but > > it can give user more options (ELEMENT or element)? > > > > If using strcicmp, then strstrip would be required. > > > > Just to reminder that strstrip does a wider job by cleaning any kind of > > spaces. sysfs_streq deals only with 1 leading "\n". > > > Sounds too fancy :-) > > Here with sysfs_streq. Clean and simple. > > ============================== CUT HERE ============================== > From: Jarkko Nikula <jhnikula@xxxxxxxxx> > Subject: [PATCH 1/3] OMAP: McBSP: Use textual values in DMA operating mode sysfs files > > Use more descriptive than numerical value when showing and storing the > McBSP DMA operating mode. Show function is using similar syntax than e.g. > the led triggers so that all possible values for store function are > printed but with current value surrounded with square brackets. > > Signed-off-by: Jarkko Nikula <jhnikula@xxxxxxxxx> > Cc: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxx> > Cc: Eduardo Valentin <eduardo.valentin@xxxxxxxxx> Acked-by: Eduardo Valentin <eduardo.valentin@xxxxxxxxx> > --- > arch/arm/plat-omap/mcbsp.c | 48 ++++++++++++++++++++++--------------------- > 1 files changed, 25 insertions(+), 23 deletions(-) > > diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c > index b63a720..ee60ab6 100644 > --- a/arch/arm/plat-omap/mcbsp.c > +++ b/arch/arm/plat-omap/mcbsp.c > @@ -1161,25 +1161,31 @@ static DEVICE_ATTR(prop, 0644, prop##_show, prop##_store); > THRESHOLD_PROP_BUILDER(max_tx_thres); > THRESHOLD_PROP_BUILDER(max_rx_thres); > > +static const char *dma_op_modes[] = { > + "element", "threshold", "frame", > +}; > + > static ssize_t dma_op_mode_show(struct device *dev, > struct device_attribute *attr, char *buf) > { > struct omap_mcbsp *mcbsp = dev_get_drvdata(dev); > - int dma_op_mode; > + int dma_op_mode, i = 0; > + ssize_t len = 0; > + const char * const *s; > > spin_lock_irq(&mcbsp->lock); > dma_op_mode = mcbsp->dma_op_mode; > spin_unlock_irq(&mcbsp->lock); > > - return sprintf(buf, "current mode: %d\n" > - "possible mode values are:\n" > - "%d - %s\n" > - "%d - %s\n" > - "%d - %s\n", > - dma_op_mode, > - MCBSP_DMA_MODE_ELEMENT, "element mode", > - MCBSP_DMA_MODE_THRESHOLD, "threshold mode", > - MCBSP_DMA_MODE_FRAME, "frame mode"); > + for (s = &dma_op_modes[i]; i < ARRAY_SIZE(dma_op_modes); s++, i++) { > + if (dma_op_mode == i) > + len += sprintf(buf + len, "[%s] ", *s); > + else > + len += sprintf(buf + len, "%s ", *s); > + } > + len += sprintf(buf + len, "\n"); > + > + return len; > } > > static ssize_t dma_op_mode_store(struct device *dev, > @@ -1187,26 +1193,22 @@ static ssize_t dma_op_mode_store(struct device *dev, > const char *buf, size_t size) > { > struct omap_mcbsp *mcbsp = dev_get_drvdata(dev); > - unsigned long val; > - int status; > + const char * const *s; > + int i = 0; > > - status = strict_strtoul(buf, 0, &val); > - if (status) > - return status; > + for (s = &dma_op_modes[i]; i < ARRAY_SIZE(dma_op_modes); s++, i++) > + if (sysfs_streq(buf, *s)) > + break; > > - spin_lock_irq(&mcbsp->lock); > + if (i == ARRAY_SIZE(dma_op_modes)) > + return -EINVAL; > > + spin_lock_irq(&mcbsp->lock); > if (!mcbsp->free) { > size = -EBUSY; > goto unlock; > } > - > - if (val > MCBSP_DMA_MODE_FRAME || val < MCBSP_DMA_MODE_ELEMENT) { > - size = -EINVAL; > - goto unlock; > - } > - > - mcbsp->dma_op_mode = val; > + mcbsp->dma_op_mode = i; > > unlock: > spin_unlock_irq(&mcbsp->lock); > -- > 1.6.3.3 -- Eduardo Valentin _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel