<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="ProgId" content="Word.Document">
<meta name="Generator" content="Microsoft Word 11">
<meta name="Originator" content="Microsoft Word 11">
<link rel="File-List" href="cid:filelist.xml@01C9AEFE.8A643900"><!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:DoNotRelyOnCSS/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:DontDisplayPageBoundaries/>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:DocumentKind>DocumentEmail</w:DocumentKind>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]--><style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-parent:"";
        margin:0in;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;
        text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;
        text-underline:single;}
pre
        {margin:0in;
        margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Courier New";
        mso-fareast-font-family:"Times New Roman";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        mso-style-noshow:yes;
        mso-ansi-font-size:10.0pt;
        mso-bidi-font-size:10.0pt;
        font-family:Arial;
        mso-ascii-font-family:Arial;
        mso-hansi-font-family:Arial;
        mso-bidi-font-family:Arial;
        color:windowtext;}
span.SpellE
        {mso-style-name:"";
        mso-spl-e:yes;}
span.GramE
        {mso-style-name:"";
        mso-gram-e:yes;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;
        mso-header-margin:.5in;
        mso-footer-margin:.5in;
        mso-paper-source:0;}
div.Section1
        {page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
 /* Style Definitions */ 
 table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0in 5.4pt 0in 5.4pt;
        mso-para-margin:0in;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";
        mso-ansi-language:#0400;
        mso-fareast-language:#0400;
        mso-bidi-language:#0400;}
</style>
<![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="tab-interval:.5in">
<div class="Section1">
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size:10.0pt;
font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size:10.0pt;
font-family:Arial">I&#8217;m trying to do the same sort of thing
<o:p></o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size:10.0pt;
font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size:10.0pt;
font-family:Arial"><o:p>&nbsp;</o:p></span></font></p>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">On Fri, Feb 13, 2009 at 3:40 AM, <span class="SpellE">Henk</span> <span class="SpellE">Stegeman</span> &lt;<a href="https://ozlabs.org/mailman/listinfo/linuxppc-dev"><span class="SpellE">henk.stegeman</span> at gmail.com</a>&gt; wrote:<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> I'm busy adding support for slave <span class="SpellE">deviced</span> behind mpc52xx-psc-spi.<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> One complication I have is that my SPI slave device has an interrupt output<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="GramE">to</span> the CPU.<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> My idea is to add it as a <span class="SpellE">gpios</span> property in the slave <span class="GramE">device's</span><o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="GramE">configuration</span>:<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a href="https://ozlabs.org/mailman/listinfo/linuxppc-dev"><span class="SpellE"><span class="GramE">spi</span></span> at 2400</a> {<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// PSC3 (SPI IF to the IO-controller )<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">device_type</span> = &quot;<span class="SpellE">spi</span>&quot;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#address-cells = &lt;1&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#size-cells = &lt;0&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">compatible</span> = &quot;fsl,mpc5200-psc-spi&quot;,&quot;fsl,mpc5200b-psc-spi&quot;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">cell-index</span> = &lt;2&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">reg</span></span> = &lt;0x2400 0x100&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>interrupts = &lt;2 3 0&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">interrupt-parent</span> = &lt;&amp;mpc5200_pic&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">gpios</span></span> = &lt;&amp;gpt4 0 <span class="SpellE">0</span>&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a href="https://ozlabs.org/mailman/listinfo/linuxppc-dev"><span class="SpellE"><span class="GramE">io</span></span><span class="GramE">-controller</span> at 0</a> {<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">compatible</span> = &quot;microkey,smc4000io&quot;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">spi</span></span><span class="GramE">-max-frequency</span> = &lt;1000000&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">reg</span></span> = &lt;0&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// <span class="SpellE">gpios</span>: first is IRQ to <span class="SpellE"><span class="GramE">cpu</span></span><o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">gpios</span></span> = &lt;&amp;gpt6 0 <span class="SpellE">0</span>&gt;;<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>};<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">There is a better way to do this, and driver support for it is<o:p></o:p></span></font></pre>
<pre><span class="GramE"><font size="2" face="Courier New"><span style="font-size:10.0pt">currently</span></font></span> merged into Ben <span class="SpellE">Herrenschmidt's</span> -next tree.<o:p></o:p></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Do this instead:<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a href="https://ozlabs.org/mailman/listinfo/linuxppc-dev"><span class="SpellE"><span class="GramE">io</span></span><span class="GramE">-controller</span> at 0</a> {<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">compatible</span> = &quot;microkey,smc4000io&quot;;<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">spi</span></span><span class="GramE">-max-frequency</span> = &lt;1000000&gt;;<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">reg</span></span> = &lt;0&gt;;<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">interrupt-controller</span> = &lt; &amp;gpt6 &gt;;<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>// Use GPT6 as<o:p></o:p></span></font></pre>
<pre><span class="GramE"><font size="2" face="Courier New"><span style="font-size:10.0pt">the</span></font></span> IRQ controller<o:p></o:p></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">interrupts</span> = &lt; 1 &gt;;<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp; </span>// And make it rising edge.<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>};<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Then add these two properties to the GPT node:<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">interrupt-controller</span>;<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>#interrupt-cells = &lt;1&gt;;<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Then you can use normal <span class="SpellE">irq_of_parse_and_<span class="GramE">map</span></span><span class="GramE">(</span>) to set up your handler.<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> How should I then register my <span class="SpellE">spi</span> slave driver? My smc4000io_probe function<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> gets called correctly by <span class="SpellE">of_spi</span> support but when I register as follows:<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="GramE">static</span> <span class="SpellE">struct</span> <span class="SpellE">spi_driver</span> smc4000io_driver = {<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>.driver = {<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.name<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp; </span>= &quot;smc4000io&quot;,<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.bus<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp; </span>= &amp;<span class="SpellE">spi_bus_type</span>,<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.owner<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp; </span>= THIS_MODULE,<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>},<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>.probe<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>= smc4000io_probe,<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>.remove<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>= __<span class="SpellE">devexit_<span class="GramE">p</span></span><span class="GramE">(</span>smc4000io_remove),<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> };<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="GramE">static</span> <span class="SpellE">int</span> __init smc4000io_init(void)<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> {<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>return <span class="SpellE">spi_register_<span class="GramE">driver</span></span><span class="GramE">(</span>&amp;smc4000io_driver);<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> }<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="GramE">static</span> void __exit smc4000io_exit(void)<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> {<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">spi_unregister_<span class="GramE">driver</span></span><span class="GramE">(</span>&amp;smc4000io_driver);<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> }<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="SpellE">module_<span class="GramE">init</span></span><span class="GramE">(</span>smc4000io_init);<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Yes, this is right.<span style="mso-spacerun:yes">&nbsp; </span>The <span class="SpellE">psc_spi</span> driver automatically registers all<o:p></o:p></span></font></pre>
<pre><span class="SpellE"><span class="GramE"><font size="2" face="Courier New"><span style="font-size:10.0pt">spi</span></font></span></span> children that it finds in the device tree onto the SPI bus.<o:p></o:p></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Therefore registering an <span class="SpellE">spi_<span class="GramE">driver</span></span><span class="GramE">(</span>) is the right thing to do.<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> But when I do:<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="GramE">static</span> <span class="SpellE">struct</span> <span class="SpellE">of_platform_driver</span> smc4000_spi_of_driver = {<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>.name = &quot;smc4000io&quot;,<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>.<span class="SpellE">match_table</span> = smc4000io_of_match,<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>.probe = smc4000io_of_probe,<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>.remove<span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>= __<span class="SpellE">devexit_<span class="GramE">p</span></span><span class="GramE">(</span>smc4000io_of_remove),<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> };<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="GramE">static</span> <span class="SpellE">int</span> __init smc4000io_init(void)<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> {<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><span style="mso-spacerun:yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>return <span class="SpellE">of_register_platform_<span class="GramE">driver</span></span><span class="GramE">(</span>&amp;smc4000_spi_of_driver);<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> }<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> <span class="SpellE">module_<span class="GramE">init</span></span><span class="GramE">(</span>smc4000io_init);<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"><o:p>&nbsp;</o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">&gt;<i><span style="font-style:italic"> Then my smc4000io_of_probe function never gets called.<o:p></o:p></span></i></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Correct.<span style="mso-spacerun:yes">&nbsp; </span><span class="SpellE">of_platform_driver</span> isn't useful in this case because the<o:p></o:p></span></font></pre>
<pre><span class="GramE"><font size="2" face="Courier New"><span style="font-size:10.0pt">device</span></font></span> cannot exist independently of the SPI bus.<span style="mso-spacerun:yes">&nbsp; </span>Plus an<o:p></o:p></pre>
<pre><span class="SpellE"><font size="2" face="Courier New"><span style="font-size:10.0pt">of_platform_device</span></font></span> doesn't provide any information about the SPI bus<o:p></o:p></pre>
<pre><span class="GramE"><font size="2" face="Courier New"><span style="font-size:10.0pt">itself</span></font></span>.<o:p></o:p></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><span class="GramE"><font size="2" face="Courier New"><span style="font-size:10.0pt">g</span></font></span>.<o:p></o:p></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">-- <o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Grant Likely, B.Sc., <span class="SpellE">P.Eng</span>.<o:p></o:p></span></font></pre>
<pre><font size="2" face="Courier New"><span style="font-size:10.0pt">Secret Lab Technologies Ltd.<o:p></o:p></span></font></pre>
<p class="MsoNormal"><font size="2" face="Times New Roman"><span style="font-size:
11.0pt"><o:p>&nbsp;</o:p></span></font></p>
</div>
</body>
</html>