Re: PCI-ISA Bridge not operating

David Brigada
2008-07-11T16:56:07Z

Jordan Crouse wrote:
> On 11/07/08 10:58 -0400, David Brigada wrote:
>> Hi,
>>
>> I'm working with the MSM800XEV board from Digital-Logic. This board
>> uses a Geode LX800 for a CPU and has the CS5536 companion board also
>> installed. The board works with an IT8888G IC that provides a PCI/ISA
>> bridge to a PC/104 bus that is externally provided.
>>
>> If I boot with FreeDOS, I can twiddle I/O ports, and the proper ISA
>> signaling comes over the PC/104 bus. In Linux, the /IOW or /IOR line
>> goes low as expected, but the address doesn't come over the bus. The
>> DOS that I'm running doesn't seem to have any specific drivers for the
>> chip, I'm guessing that the hardware should "just work" --- the IT8888G
>> is designed to grab I/O requests in the ISA range off the PCI bus after
>> a short delay if nothing else grabs them first.
>>
>> I have a feeling that it has something to do with the CS5536 companion
>> chip, as it seems as though there is a driver for a PCI/ISA bridge on
>> that chip, though I can't get much detail from AMD's datasheet on that
>> functionality. I do know that on the MSM800XEV, any such functionality
>> is wired to the IT8888G, not the CS5536.
>>
>> There are two kernel config options related to the PCI IDs of the parts
>> of the device that handle the ISA bus, CONFIG_SCx200_ACB and
>> CONFIG_CS5535_GPIO. I've tried disabling both, but it doesn't seem to help.
>>
>> In lspci, the CS5536 PCI/ISA bridge is shown, but not the IT8888G.
>>
>> Any ideas?
>
> ISA should indeed "just work". The only thing I'm wondering is if
> the kernel is interfering (it shouldn't). I assume that since it works
> in FreeDOS that there is no possibility that something on the PCI bus
> is grabbing the cycles instead.

That's what I'm thinking --- that the CS5536 PCI/ISA bridge is claiming
the cycles.

> How are you trying to access the device in Linux? Through a kernel module
> or a user application running as root?

I've tried both. I have a kernel module that I wrote for the hardware.
When I couldn't get that working, I tried looping some code that keeps
touching the same I/O port that I'm using.

> Jordan
>

Dave