From: York Sun <yorksun-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
To: Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
Cc: Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: I2C class bitmask
Date: Sat, 23 May 2015 09:50:35 -0700 [thread overview]
Message-ID: <5560AFDB.30307@freescale.com> (raw)
In-Reply-To: <20150523162737.GA4981-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
On 05/23/2015 09:27 AM, Guenter Roeck wrote:
> On Thu, May 21, 2015 at 02:07:31PM -0700, York Sun wrote:
>> Lee,
>>
>> Is there any convention regarding I2C class bitmask? I see only three are
>> defined for 3.12.19 and four for 4.0
>>
>> I2C_CLASS_HWMON, I2C_CLASS_DDC, I2C_CLASS_SPD, I2C_CLASS_DEPRECATED
>>
>> I am working on a clock chip driver (SI5338) and trying to detect them (multiple
>> chips in i2c mux). It would be a lot easier to have its own class, like
>> I2C_CLASS_CLOCK. It is trivial to add a line to i2c.h file. Just checking if
>> this is a bad idea.
>>
>
> A class is supposed to indicate if a specific chip class is likely to be seen
> on an i2c adapter, and that it may be necessary to auto-detect it (an example
> are I2C_CLASS_HWMON type devices on PCs). The tendency, though, is to drop
> existing markers for I2C_CLASS_xxx from adapter drivers as much as possible
> because it slows down the boot process (see upstream commit 0c176170089c3).
>
> Auto-detection (with the _detect function) is not a preferred means to
> instantiate a device. It takes time, and it is more or less unreliable.
> For some chips, a read on its i2c register space can result in a chip reset,
> or it can cause it to lose its programming. Worst case it can turn a system
> into a brick.
>
> Preferred instantiations are listed in Documentation/i2c/instantiating-devices.
> Instantiation with devicetree, ACPI, or through i2c_register_board_info()
> would probably be the best available methods to instantiate a clock chip.
>
> Given that, first question is why you would want to have the chip auto-detected
> in the first place. Is there any reason to believe that explicit instantiation
> would not work in your system ? What are those reasons ?
>
> On top of that, the SI5338 does not have a clean way to detect the chip.
> It does not have a chip ID register, and it is multi-banked. Given the
> similarities of the various Silicon Labs clock chips, it may not even be
> possible to reliably distinguish it from other SI chips. So even if you
> had a good reason to auto-detect the chip, it would be _very_ unreliable.
> This seems to be quite undesirable and risky for a clock chip.
> Are you really sure that you want and need that ?
>
Guenter,
Thanks for replying.
No, I don't have to use autodetect. I was curious why there weren't more
classes. I failed to notice which method is preferred in the mentioned document.
I used to declare the devices by the bus number but met some issue when they are
behind a mux. I temporarily used auto detect before I figure out how to describe
the mux with i2c_board_info.
Knowing auto-detection is not preferred, I will remove it from the proposed driver.
Thanks again.
York
WARNING: multiple messages have this Message-ID (diff)
From: York Sun <yorksun@freescale.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Lee Jones <lee.jones@linaro.org>, <linux-kernel@vger.kernel.org>,
<linux-i2c@vger.kernel.org>
Subject: Re: I2C class bitmask
Date: Sat, 23 May 2015 09:50:35 -0700 [thread overview]
Message-ID: <5560AFDB.30307@freescale.com> (raw)
In-Reply-To: <20150523162737.GA4981@roeck-us.net>
On 05/23/2015 09:27 AM, Guenter Roeck wrote:
> On Thu, May 21, 2015 at 02:07:31PM -0700, York Sun wrote:
>> Lee,
>>
>> Is there any convention regarding I2C class bitmask? I see only three are
>> defined for 3.12.19 and four for 4.0
>>
>> I2C_CLASS_HWMON, I2C_CLASS_DDC, I2C_CLASS_SPD, I2C_CLASS_DEPRECATED
>>
>> I am working on a clock chip driver (SI5338) and trying to detect them (multiple
>> chips in i2c mux). It would be a lot easier to have its own class, like
>> I2C_CLASS_CLOCK. It is trivial to add a line to i2c.h file. Just checking if
>> this is a bad idea.
>>
>
> A class is supposed to indicate if a specific chip class is likely to be seen
> on an i2c adapter, and that it may be necessary to auto-detect it (an example
> are I2C_CLASS_HWMON type devices on PCs). The tendency, though, is to drop
> existing markers for I2C_CLASS_xxx from adapter drivers as much as possible
> because it slows down the boot process (see upstream commit 0c176170089c3).
>
> Auto-detection (with the _detect function) is not a preferred means to
> instantiate a device. It takes time, and it is more or less unreliable.
> For some chips, a read on its i2c register space can result in a chip reset,
> or it can cause it to lose its programming. Worst case it can turn a system
> into a brick.
>
> Preferred instantiations are listed in Documentation/i2c/instantiating-devices.
> Instantiation with devicetree, ACPI, or through i2c_register_board_info()
> would probably be the best available methods to instantiate a clock chip.
>
> Given that, first question is why you would want to have the chip auto-detected
> in the first place. Is there any reason to believe that explicit instantiation
> would not work in your system ? What are those reasons ?
>
> On top of that, the SI5338 does not have a clean way to detect the chip.
> It does not have a chip ID register, and it is multi-banked. Given the
> similarities of the various Silicon Labs clock chips, it may not even be
> possible to reliably distinguish it from other SI chips. So even if you
> had a good reason to auto-detect the chip, it would be _very_ unreliable.
> This seems to be quite undesirable and risky for a clock chip.
> Are you really sure that you want and need that ?
>
Guenter,
Thanks for replying.
No, I don't have to use autodetect. I was curious why there weren't more
classes. I failed to notice which method is preferred in the mentioned document.
I used to declare the devices by the bus number but met some issue when they are
behind a mux. I temporarily used auto detect before I figure out how to describe
the mux with i2c_board_info.
Knowing auto-detection is not preferred, I will remove it from the proposed driver.
Thanks again.
York
next prev parent reply other threads:[~2015-05-23 16:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-21 21:07 I2C class bitmask York Sun
2015-05-21 21:07 ` York Sun
2015-05-23 16:27 ` Guenter Roeck
[not found] ` <20150523162737.GA4981-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2015-05-23 16:50 ` York Sun [this message]
2015-05-23 16:50 ` York Sun
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=5560AFDB.30307@freescale.com \
--to=yorksun-kzfg59tc24xl57midrcfdg@public.gmane.org \
--cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@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 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.