linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Pietrek, Markus" <Markus.Pietrek-BU0Y/NROKIiELgA04lAiVw@public.gmane.org>
To: Baruch Siach <baruch-NswTu9S1W3P6gbPvEgmw2w@public.gmane.org>
Cc: "spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
	<spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: [PATCH] spi_board_info_cmdline.c: unknown command line options are ignored and all options have a name instead of being anonymous
Date: Tue, 2 Feb 2010 16:08:57 +0100	[thread overview]
Message-ID: <95F51F4B902CAC40AF459205F6322F0171E8D499AC@BMK019S01.emtrion.local> (raw)
In-Reply-To: <20100130230629.GA2634@tarshish>

Hi Barauch,

as requested a more open approach for the command line options

Signed-off-by: Markus Pietrek <markus.pietrek-BU0Y/NROKIiELgA04lAiVw@public.gmane.org>
---
 drivers/spi/Kconfig                  |    2 +-
 drivers/spi/spi_board_info_cmdline.c |   92 +++++++++++++++------------------
 2 files changed, 43 insertions(+), 51 deletions(-)

diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 85e88fa..c8f3bbe 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -327,7 +327,7 @@ config SPI_BOARD_INFO_CMDLINE
           The syntax is:
          spi_board_info=<devcfg>[,<devcfg>...]
          with <devcfg> as
-         <devname>[:<max_speed_hz>[:<bus_num>[:<chip_select>[:<irq>[:<opt>[:<opt>...]]]]]]
+         <devname>[:max_speed_hz=<int>][:bus_num=<int>][:chip_select=<int>][:irq=<int>][:cs_gpio=<int>][:<opt>][:<opt>]...
           and <opt> as one of
           cpha,cpol,mode0,mode1,mode2,mode3,cs,lsb,3wire,loop,no_cs,ready

diff --git a/drivers/spi/spi_board_info_cmdline.c b/drivers/spi/spi_board_info_cmdline.c
index 765a941..1d86f87 100644
--- a/drivers/spi/spi_board_info_cmdline.c
+++ b/drivers/spi/spi_board_info_cmdline.c
@@ -65,57 +65,49 @@ static int __init spi_board_info_register_device(char *dev)
                if (next)
                        *next++ = '\0';

-               if (strlen(opt) > 0) {
-                       switch (num) {
-                           case 0:
-                               strncpy(info->modalias, opt, ARRAY_SIZE(info->modalias));
-                               info->modalias[ARRAY_SIZE(info->modalias)-1]=0;
-                               break;
-                           case 1:
-                               info->max_speed_hz = simple_strtoul(opt, NULL, 10);
-                               break;
-                           case 2:
-                               info->bus_num = simple_strtoul(opt, NULL, 10);
-                               break;
-                           case 3:
-                               info->chip_select = simple_strtoul(opt, NULL, 10);
-                               break;
-                           case 4:
+               if (!num) {
+                       /* name of device */
+                       strncpy(info->modalias, opt, ARRAY_SIZE(info->modalias));
+                       info->modalias[ARRAY_SIZE(info->modalias)-1]=0;
+               } else {
+                       if (!strcmp(opt, "cpha"))
+                               info->mode |= SPI_CPHA;
+                       else if (!strcmp(opt, "cpol"))
+                               info->mode |= SPI_CPOL;
+                       else if (!strcmp(opt, "mode0"))
+                               info->mode |= SPI_MODE_0;
+                       else if (!strcmp(opt, "mode1"))
+                               info->mode |= SPI_MODE_1;
+                       else if (!strcmp(opt, "mode2"))
+                               info->mode |= SPI_MODE_2;
+                       else if (!strcmp(opt, "mode3"))
+                               info->mode |= SPI_MODE_3;
+                       else if (!strcmp(opt, "cs_high"))
+                               info->mode |= SPI_CS_HIGH;
+                       else if (!strcmp(opt, "lsb"))
+                               info->mode |= SPI_LSB_FIRST;
+                       else if (!strcmp(opt, "3wire"))
+                               info->mode |= SPI_3WIRE;
+                       else if (!strcmp(opt, "loop"))
+                               info->mode |= SPI_LOOP;
+                       else if (!strcmp(opt, "no_cs"))
+                               info->mode |= SPI_NO_CS;
+                       else if (!strcmp(opt, "ready"))
+                               info->mode |= SPI_READY;
+                       else if (!strncmp(opt, "chip_select=", 12))
+                               info->chip_select = simple_strtoul(&opt[12], NULL, 10);
+                       else if (!strncmp(opt, "cs_gpio=", 8))
+                               /* defines the GPIO to be used as chipselect for spi_gpio.c */
+                               info->controller_data = (void*) simple_strtol(&opt[8], NULL, 10);
+                       else if (!strncmp(opt, "bus_num=", 8))
+                               info->bus_num = simple_strtoul(&opt[8], NULL, 10);
+                       else if (!strncmp(opt, "max_speed_hz=", 13))
+                               info->max_speed_hz = simple_strtoul(&opt[13], NULL, 10);
+                       else if (!strncmp(opt, "irq=", 4))
                                info->irq = simple_strtoul(opt, NULL, 10);
-                               break;
-                           default:
-                               if (!strcmp(opt, "cpha"))
-                                       info->mode |= SPI_CPHA;
-                               else if (!strcmp(opt, "cpol"))
-                                       info->mode |= SPI_CPOL;
-                               else if (!strcmp(opt, "mode0"))
-                                       info->mode |= SPI_MODE_0;
-                               else if (!strcmp(opt, "mode1"))
-                                       info->mode |= SPI_MODE_1;
-                               else if (!strcmp(opt, "mode2"))
-                                       info->mode |= SPI_MODE_2;
-                               else if (!strcmp(opt, "mode3"))
-                                       info->mode |= SPI_MODE_3;
-                               else if (!strcmp(opt, "cs"))
-                                       info->mode |= SPI_CS_HIGH;
-                               else if (!strcmp(opt, "lsb"))
-                                       info->mode |= SPI_LSB_FIRST;
-                               else if (!strcmp(opt, "3wire"))
-                                       info->mode |= SPI_3WIRE;
-                               else if (!strcmp(opt, "loop"))
-                                       info->mode |= SPI_LOOP;
-                               else if (!strcmp(opt, "no_cs"))
-                                       info->mode |= SPI_NO_CS;
-                               else if (!strcmp(opt, "ready"))
-                                       info->mode |= SPI_READY;
-                               else {
-                                       pr_err(DRIVER_NAME ": Don't know value %s\n", opt);
-                                       kfree(info);
-                                       return -1;
-                               }
-
-                               break;
-                       }
+                       else
+                               pr_err(DRIVER_NAME ": Unknown option %s, ignoring\n", opt);
+                       break;
                }

                /* next option */
--
1.5.4.3

_____________________________________

Amtsgericht Mannheim
HRB 110 300
Gesch?ftsf?hrer: Dieter Baur, Ramona Maurer
_____________________________________

Important Note:
- This e-mail may contain trade secrets or privileged, undisclosed or otherwise confidential information.
- If you have received this e-mail in error, you are hereby notified that any review, copying or distribution of it is strictly prohibited.
- Please inform us immediately and destroy the original transmittal.

Thank you for your cooperation.

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com

  reply	other threads:[~2010-02-02 15:08 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-29 13:48 [PATCH] added drivers/spi/spi_board_info_cmdline for setting up an spi_board_info structure on commandline Pietrek, Markus
     [not found] ` <95F51F4B902CAC40AF459205F6322F0171E8D49880-76KB/CMpcTeJqUQdFWzYuOuPKLVQfWtC@public.gmane.org>
2010-01-30 23:06   ` Baruch Siach
2010-02-02 15:08     ` Pietrek, Markus [this message]
     [not found]       ` <95F51F4B902CAC40AF459205F6322F0171E8D499AC-76KB/CMpcTeJqUQdFWzYuOuPKLVQfWtC@public.gmane.org>
2010-02-03 17:39         ` [PATCH] spi_board_info_cmdline.c: unknown command line options are ignored and all options have a name instead of being anonymous Grant Likely
2010-02-04  5:58         ` Baruch Siach

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=95F51F4B902CAC40AF459205F6322F0171E8D499AC@BMK019S01.emtrion.local \
    --to=markus.pietrek-bu0y/nrokiielga04laivw@public.gmane.org \
    --cc=baruch-NswTu9S1W3P6gbPvEgmw2w@public.gmane.org \
    --cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).