<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/sparc64/kernel/of_device.c, branch linux-2.6.19.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.19.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2006-10-27T08:03:31Z</updated>
<entry>
<title>[SPARC]: Fix bus_id[] string overflow.</title>
<updated>2006-10-27T08:03:31Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-10-27T08:03:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f5ef9d11fd255b30b455d18f8d721bc44cd1296b'/>
<id>urn:sha1:f5ef9d11fd255b30b455d18f8d721bc44cd1296b</id>
<content type='text'>
dp-&gt;path_component_name can be larger than -&gt;bus_id[]
so use a different naming scheme for this stuff.

Noticed by Jurij Smakov.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SPARC64]: Fix central/FHC bus handling on Ex000 systems.</title>
<updated>2006-10-26T05:39:15Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-10-26T05:31:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4130a4b206e7c628482aa12ec30949382c8cdc5e'/>
<id>urn:sha1:4130a4b206e7c628482aa12ec30949382c8cdc5e</id>
<content type='text'>
1) probe_other_fhcs() wants to see only non-central FHC
   busses, so skip FHCs that don't sit off the root

2) Like SBUS, FHC can lack the appropriate address and
   size cell count properties, so add an of_busses[]
   entry and handlers for that.

3) Central FHC irq translator probing was buggy.  We
   were trying to use dp-&gt;child in irq_trans_init but
   that linkage is not setup at this point.

   So instead, pass in the parent of "dp" and look for
   the child "fhc" with parent "central".

Thanks to the tireless assistence of Ben Collins in tracking
down these problems and testing out these fixes.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SPARC64]: Fix of_ioremap().</title>
<updated>2006-10-20T00:20:31Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-10-19T06:00:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6bda57365a5fda4743d83a5987c6aab66e90771c'/>
<id>urn:sha1:6bda57365a5fda4743d83a5987c6aab66e90771c</id>
<content type='text'>
Use request_mem_region() if IORESOURCE_MEM.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SPARC64]: Fix of_device bus_id settings.</title>
<updated>2006-10-10T00:24:52Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-10-05T09:07:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4b75eb2bd30707c1af76145fd3a4ec2d890e1870'/>
<id>urn:sha1:4b75eb2bd30707c1af76145fd3a4ec2d890e1870</id>
<content type='text'>
They have to be unique system-wide, so use
"NAME@NODE" as the string pattern of the non-root
nodes.

Thanks to Andrew Morton for fixing the error value
checking in bus_add_device() which made this problem
finally noticable.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>Remove all inclusions of &lt;linux/config.h&gt;</title>
<updated>2006-10-04T07:38:54Z</updated>
<author>
<name>Dave Jones</name>
</author>
<published>2006-10-04T07:38:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=038b0a6d8d32db934bba6a24e74e76e4e327a94f'/>
<id>urn:sha1:038b0a6d8d32db934bba6a24e74e76e4e327a94f</id>
<content type='text'>
kbuild explicitly includes this at build time.

Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
</entry>
<entry>
<title>[SPARC64]: Fix more of_device layer IRQ bugs, and correct PROMREG_MAX.</title>
<updated>2006-07-21T21:17:52Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-07-17T05:10:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=46ba6d7d8b0486e9d565729880ddfb2b84d3af31'/>
<id>urn:sha1:46ba6d7d8b0486e9d565729880ddfb2b84d3af31</id>
<content type='text'>
Sabre and Psycho PCI controllers can have partial interrupt-map
properties, meaning that on-board devices don't match up to any
entries.  Instead, they are fully specified from the beginning and
we should pass them directly to the IRQ translator as-is.

Also, fill in the necessary translator slots for the "graphics"
and "expansion UPA" interrupts on Sabre, Psycho, and SYSIO SBUS.

Increase PROMREG_MAX to 24, as seen on SUNW,ffb devices.

Finally, prevent accidentally writing past the end of the of_device
struct resource[] and irqs[] arrays.  Spit out a log message when
we ignore some entries because there are too many of them.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SPARC]: Fix OF register translations under sub-PCI busses.</title>
<updated>2006-07-13T08:50:15Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-07-13T06:19:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a83f982313bc60dd3d87e50f8c88d6a169e8a5a0'/>
<id>urn:sha1:a83f982313bc60dd3d87e50f8c88d6a169e8a5a0</id>
<content type='text'>
There is an implicit assumption in the code that ranges will translate
to something that can fit in 2 32-bit cells, or a 64-bit value.  For
certain kinds of things below PCI this isn't necessarily true.

Here is what the relevant OF device hierarchy looks like for one of
the serial controllers on an Ultra5:

    Node 0xf005f1e0
        ranges:      00000000.00000000.00000000.000001fe.01000000.00000000.01000000
                     01000000.00000000.00000000.000001fe.02000000.00000000.01000000
                     02000000.00000000.00000000.000001ff.00000000.00000001.00000000
                     03000000.00000000.00000000.000001ff.00000000.00000001.00000000
        device_type:  'pci'
        model:  'SUNW,sabre'

        Node 0xf005f9d4
            device_type:  'pci'
            model:  'SUNW,simba'

           Node 0xf0060d24
                ranges:  00000010.00000000 82010810.00000000.f0000000 01000000
			 00000014.00000000 82010814.00000000.f1000000 00800000
                name:  'ebus'

                Node 0xf0062dac
                    reg:  00000014.003083f8.00000008 --&gt; 0x1ff.f13083f8
                    device_type:  'serial'
                    name:  'su'

So the correct translation here is:

1) Match "su" register to second ranges entry of 'ebus', which translates
   into a PCI triplet "82010814.00000000.f1000000" of size 00800000, which
   gives us "82010814.00000000.f13083f8".

2) Pass-through "SUNW,simba" since it lacks ranges property

3) Match "82010814.00000000.f13083f8" to third ranges property of PCI
   controller node 'SUNW,sabre', and we arrive at the final physical
   MMIO address of "0x1fff13083f8".

Due to the 2-cell assumption, we couldn't translate to a PCI 3-cell
value, and we couldn't perform a pass-thru on it either.

It was easiest to just stop splitting the ranges application operation
between two methods, -&gt;map and -&gt;translate, and just let -&gt;map do all
the work.  That way it would work purely on 32-bit cell arrays instead
of having to "return" some value like a u64.

It's still not %100 correct because the out-of-range check is still
done using the 64 least significant bits of the range and address.
But it does work for all the cases I've thrown at it so far.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SPARC64]: of_device_register() error checking fix</title>
<updated>2006-07-13T08:50:01Z</updated>
<author>
<name>Andrew Morton</name>
</author>
<published>2006-07-10T22:28:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6cc8b6f51eb1af72882c279f691c5de7d5a43bf2'/>
<id>urn:sha1:6cc8b6f51eb1af72882c279f691c5de7d5a43bf2</id>
<content type='text'>
device_create_file() can fail.  This causes the sparc64 compile to
fail when my fanatical __must_check patch is applied, due to -Werror.

[ Added necessary identical fix for sparc32. -DaveM]

Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SPARC64]: Mask out top 8-bits in physical address when building resources.</title>
<updated>2006-06-30T21:13:36Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-06-30T02:58:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1815aed5edbc79c6f3de6f022efb0af30dd0a70d'/>
<id>urn:sha1:1815aed5edbc79c6f3de6f022efb0af30dd0a70d</id>
<content type='text'>
These top 8-bits are supposed to be ignored in the ranges and
top-level reg properties on this platform.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>[SPARC64]: of_device layer IRQ resolution</title>
<updated>2006-06-29T23:37:38Z</updated>
<author>
<name>David S. Miller</name>
</author>
<published>2006-06-29T22:07:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2b1e59787198e75fb2ffb3bb4fb247da1c55ac12'/>
<id>urn:sha1:2b1e59787198e75fb2ffb3bb4fb247da1c55ac12</id>
<content type='text'>
Do IRQ determination generically by parsing the PROM properties,
and using IRQ controller drivers for final resolution.

One immediate positive effect is that all of the IRQ frobbing
in the EBUS, ISA, and PCI controller layers has been eliminated.
We just look up the of_device and use the properly computed
value.

The PCI controller irq_build() routines are gone and no longer
used.  Unfortunately sbus_build_irq() has to remain as there is
a direct reference to this in the sunzilog driver.  That can be
killed off once the sparc32 side of this is written and the
sunzilog driver is transformed into an "of" bus driver.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
