linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Song, Barry" <Barry.Song-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
To: Mike Frysinger
	<vapier.adi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	"Hennerich,
	Michael"
	<Michael.Hennerich-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
Cc: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>,
	uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org,
	dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v3] add analog devices AD714Xcaptouchinput driver
Date: Fri, 9 Oct 2009 18:34:07 +0800	[thread overview]
Message-ID: <0F1B54C89D5F954D8535DB252AF412FA04D700BF@chinexm1.ad.analog.com> (raw)
In-Reply-To: <8bd0f97a0910090156g2a8fba58r4085422f3a79c892-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

 

>-----Original Message-----
>From: uclinux-dist-devel-bounces-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org 
>[mailto:uclinux-dist-devel-bounces-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org] On 
>Behalf Of Mike Frysinger
>Sent: Friday, October 09, 2009 4:56 PM
>To: Hennerich, Michael
>Cc: David Brownell; uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org; 
>dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org; linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>Subject: Re: [Uclinux-dist-devel] [PATCH v3] add analog 
>devices AD714Xcaptouchinput driver
>
>On Fri, Sep 11, 2009 at 09:19, Hennerich, Michael wrote:
>> On Friday 11 September 2009, Song, Barry wrote:
>> +static int __init ad714x_init(void)
>> +{
>> +
>> +       int ret = 0;
>> +       ret = ad714x_spi_register_driver(&ad714x_spi_driver);
>> +       if (ret)
>> +               goto err;
>> +       ret = ad714x_i2c_add_driver(&ad714x_i2c_driver);
>> +       if (ret)
>> +               ad714x_spi_unregister_driver(&ad714x_spi_driver);
>> +err:
>> +       return ret;
>> +}
>> +
>> +static void __exit ad714x_exit(void)
>> +{
>> +       ad714x_spi_unregister_driver(&ad714x_spi_driver);
>> +       ad714x_i2c_del_driver(&ad714x_i2c_driver);
>> +}
>>
>> This doesn't make much sense!
>> Assuming we have two AD714x in a system. One connected by 
>SPI the other
>> by I2C.
>> Why would I remove the SPI one in case the other I2C fails, 
>or not even
>> try the SPI one if the I2C fails?
>
>is this a realistic problem ?  we arent talking about failure to probe
>the device, we're talking about failure to register the driver as
>available.  i.e. the only way the module_init step should fail is if
>i2c_add_driver() or spi_register_driver() fails.  and if either of
>those fail, it's most likely a pretty bad situation.

I agree with this. It is clear the failure of spi_register_driver or i2c_add_driver means a kernel issue not a device probe issue. That maybe means no memory or other serious problems.
But anyway, I check in some codes to support the capacity that the other bus can still continue to register even after the first one fails, maybe the new codes are ugly.
static int spi_sta = -1, i2c_sta = -1;

static __init int ad714x_init(void)
{
#if defined(CONFIG_AD714X_SCAN_SPI)
        spi_sta = spi_register_driver(&ad714x_spi_driver);
#endif

#if defined(CONFIG_AD714X_SCAN_I2C)
        i2c_sta = i2c_add_driver(&ad714x_i2c_driver);
#endif

        /* If anyone of spi and i2c init successfully, we permit it to work */
        if ((spi_sta && i2c_sta) == 0)
                return 0;
        else 
                return -ENODEV;
}

static __init void ad714x_exit(void)
{
#if defined(CONFIG_AD714X_SCAN_SPI)
        if (!spi_sta)
                spi_unregister_driver(&ad714x_spi_driver);
#endif

#if defined(CONFIG_AD714X_SCAN_I2C)
        if (!i2c_sta)
                i2c_del_driver(&ad714x_i2c_driver);
#endif
}

>
>failure to probe/detect/talk to the device are a different issue and a
>problem with one interface will not affect the other.
>
>> Who says that a driver can't have two module_init()?
>
>Mr. C Code says it wont work.  if ad714x is built as a module and both
>I2C and SPI support are enabled, we get:
>drivers/input/misc/ad714x.c:1621: error: redefinition of '__inittest'
>drivers/input/misc/ad714x.c:1492: error: previous definition of
>'__inittest' was here
>
>these lines correspond to the module_init() macro
>
>linux/init.h says:
>/* Each module must use one module_init(). */
>#define module_init(initfn)                 \
>    static inline initcall_t __inittest(void)       \
>    { return initfn; }                  \
>    int init_module(void) __attribute__((alias(#initfn)));
>
>and indeed, the error makes sense -- you cant have multiple functions
>named the same thing (in this case, we'd have two __inittest() and two
>init_module())
>-mike
>_______________________________________________
>Uclinux-dist-devel mailing list
>Uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org
>https://blackfin.uclinux.org/mailman/listinfo/uclinux-dist-devel
>

  parent reply	other threads:[~2009-10-09 10:34 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-11  6:53 [PATCH v3] add analog devices AD714X captouch input driver Barry Song
2009-09-11 13:19 ` [Uclinux-dist-devel] [PATCH v3] add analog devices AD714X captouchinput driver Hennerich, Michael
2009-09-11 13:28   ` [Uclinux-dist-devel] [PATCH v3] add analog devices AD714Xcaptouchinput driver Hennerich, Michael
     [not found]   ` <8A42379416420646B9BFAC9682273B6D0DC3BD95-pcKY8lWzTjquVPpjEGsWsTcYPEmu4y7e@public.gmane.org>
2009-10-09  8:56     ` [PATCH v3] add analog devices AD714X captouchinput driver Mike Frysinger
     [not found]       ` <8bd0f97a0910090156g2a8fba58r4085422f3a79c892-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-09  9:03         ` David Woodhouse
     [not found]           ` <1255079007.8362.70.camel-uXGAPMMVk8bAQYKIod7YupZV94DADvEd@public.gmane.org>
2009-10-09  9:18             ` Mike Frysinger
     [not found]               ` <8bd0f97a0910090218j6a2aa6aaq497fba3f04d7b19f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-09  9:20                 ` David Woodhouse
2009-10-09 10:11                 ` Mike Frysinger
     [not found]                   ` <8bd0f97a0910090311t5f5167c8r336afaa6f790e1a9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-09 16:22                     ` Dmitry Torokhov
     [not found]                       ` <20091009162219.GB1092-WlK9ik9hQGAhIp7JRqBPierSzoNAToWh@public.gmane.org>
2009-10-10  2:24                         ` Barry Song
     [not found]                           ` <3c17e3570910091924p68a248e6q3dd2640acc17c90d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-10 20:38                             ` Mike Frysinger
     [not found]                               ` <8bd0f97a0910101338y46cb227hdc6d83c3c6622a21-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-12 17:08                                 ` Mike Frysinger
     [not found]                                   ` <8bd0f97a0910121008l1563803bu766e7d0868254a9f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-13  3:05                                     ` Barry Song
     [not found]                                       ` <3c17e3570910122005j16c5e0fcgc542172ca9c4a0d2-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-13  4:26                                         ` Barry Song
2009-10-09 21:33                 ` Jiri Kosina
     [not found]                   ` <alpine.LRH.2.00.0910092331040.12171-1ReQVI26iDCaZKY3DrU6dA@public.gmane.org>
2009-10-09 21:36                     ` Mike Frysinger
2009-10-09 10:34         ` Song, Barry [this message]
2009-09-14  3:36 ` [Uclinux-dist-devel] [PATCH v3] add analog devices AD714X captouch input driver Mike Frysinger
     [not found] ` <1252652006-5270-1-git-send-email-21cnbao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-10-13  6:02   ` [PATCH v4] input/misc: add Analog Devices AD714x " Mike Frysinger
2009-10-20  8:37     ` [PATCH v5] " Mike Frysinger
     [not found]       ` <1256027864-26126-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2009-12-15  4:52         ` Barry Song

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=0F1B54C89D5F954D8535DB252AF412FA04D700BF@chinexm1.ad.analog.com \
    --to=barry.song-oylxuock7orqt0dzr+alfa@public.gmane.org \
    --cc=Michael.Hennerich-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org \
    --cc=david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org \
    --cc=dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org \
    --cc=vapier.adi-Re5JQEeQqe8AvxtiuMwx3w@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).