Thank you so much with the nice example code. Now, I could understand.<div><br></div><div>Thanks!</div><div><br></div><div>J.<br><br><div class="gmail_quote">On Sun, Feb 6, 2011 at 11:51 PM, Alexandre Courbot <span dir="ltr">&lt;<a href="mailto:gnurou@gmail.com">gnurou@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">&gt; However, could you point me out where the kernel actually detects the<br>
&gt; device? Is it keep polling with the driver&#39;s name which was given at compile<br>
&gt; time? Or Is there other mechanism to detect the device? Basically, how the<br>
&gt; kernel detects those devices, which calls &quot;probe&quot;?<br>
<br>
</div>Platform devices represent devices that are usually integrated into a<br>
given chip and therefore are always there. The platform-specific<br>
initialization code statically initializes such arrays of platform<br>
devices and then registers them in a row using platform_register.<br>
Therefore there is no need for sophisticated probing. Instead, the<br>
string contained in <a href="http://platform_device.name" target="_blank">platform_device.name</a> is compared<br>
<a href="http://platform_driver.driver.name" target="_blank">platform_driver.driver.name</a> and a match is assumed if they are equal.<br>
Have a look at the attached example file that defines and registers a<br>
dummy platform driver for a dummy platform device. If you change the<br>
string, the probe function will not be called anymore.<br>
<br>
Other buses have more sophisticated detection/probing methods. For<br>
more information about platform devices, including the places where<br>
these functions are called, see drivers/base/platform.c. Reading<br>
Documentation/driver-model/platform.txt is also a good idea.<br>
<br>
Alex.<br>
</blockquote></div><br></div>