Tuesday, May 17, 2005

giving up SATA development

Well, thats it. I'm postponing further SATA development indefinitely.

I tried very hard to get the freezing bug that I described in my latest post fixed. And failed. Using only one port of a 4 port controller isn't funny. I also contacted Yellowtab, but they didn't have such a problem so far. They also explained that they didn't change much to the source code, except the SCSI support. So there is no use in getting their modified sourccode for me.

I also fear that publishing a driver that is based on sourcecode which doesn't work right, and which I don't understand, is grossly negligent. Potentially destroying 200 GB of data isn't something I would be proud of.

I considered sending all the sourccode that I modified to Yellowtab, so they can search for the bug. But I'm not doing it. They didn't share their changes, why should I share mine?

Sooner or later Yellowtab will be forced to add SATA to Zeta, if they want to please their users. Most likely they will have the same problems, perhaps they will fix them. I can wait, as SATA now works good enough for me.

Using two PCI cards with altogether 6 ports to connect two harddisks is a slight extravagance, but I can live with that.

Sunday, May 08, 2005

First SATA results

Finally the SATA driver is working.

I attached a 250 GB and a 200 GB SATA drive, and can use them with Zeta. Using Thomas Kurschel's IDE driver source, heavily modified.

But there is still a big problem. Somehow the PNP framework that is supposed to load the driver on demand completely freezes the machine when more than one controller port is published. Both the 2 port controller Si3112 and the 4 port controller Si3114 do work, as long as only one port is published. It doesn't matter which one, so I'm fairly sure that the problem isn't the driver itself, but the framework. It also doesn't matter if using Zeta's original PNP framework, or Thomas', both have the same problem.

The PNP framework is very complex, and I have much trouble understanding how it works. I only understand what it does, it's used to load the ATA framework on demand. I think it can be used to create and load other frameworks as well, for example USB. Thats why it's so complicated. Once the ATA framework is loaded, it will load the individual drivers. When trying to load the second published port of one controller, it freezes. I can't find out why.

Theres also another problem, which prevents publishing this driver. I had to add much to the ata_adapter ATA support library, so the original Zeta drivers are no longer compatible to my
modified framework. To support the 4 port controller, some of the generic device probing routines had to be modified, alowing more flexibility. I believe that the source code base that I got from Thomas might have more bugs than the one distributed with Zeta, and I don't want to publish a "downgrade".

Wednesday, May 04, 2005

Silicon Image SATA

Oh well, almost one month after Begeistert, and I still didn't get the modified Zeta IDE sources from Yellowtab. I decided to use the original IDE sources from Thomas, and he mailed them to me, together with a few instructions how to install and set it up.

I also printed out the available Linux driver for the Silicon Image chipsets to study them. They have two different drivers for the same chipset, amazing. I still have no documentation, but I guess it possible to do a driver.

I started with adding memory mapped IO support to the IDE library, as it only has support for programmed IO. The linux drivers use memory mapped IO, thus I'll need to use it as well.

So far, I managed to switch Zeta to Thomas IDE driver, which didn't require many modifications. No work done on the driver yet, just spending time on modifying the frame work.

I also bought a 4 port card, Si3114, as the Linux drivers support both.