2006-01-29 05:04:38

by Jeff Garzik

[permalink] [raw]
Subject: [PATCH] ahci: get JMicron JMB360 working


I'll be sending this upstream sooner rather than later, since part of
this is a needed bugfix. This is also a minor milestone: the first
non-Intel AHCI implementation is working with the AHCI driver. AHCI is
a nice SATA controller interface, and it's good to see other vendors
using it. VIA is using it as well, and I hope to integrate a patch for
VIA AHCI SATA support soon.

This patch, against latest 2.6.16-rc-git, adds support for JMicron and
fixes some code that should be Intel-only, but was being executed for
all vendors.


diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
index 19bd346..2fffc7b 100644
--- a/drivers/scsi/ahci.c
+++ b/drivers/scsi/ahci.c
@@ -286,6 +286,8 @@ static const struct pci_device_id ahci_p
board_ahci }, /* ICH8M */
{ PCI_VENDOR_ID_INTEL, 0x282a, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
board_ahci }, /* ICH8M */
+ { 0x197b, 0x2360, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+ board_ahci }, /* JMicron JMB360 */
{ } /* terminate list */
};

@@ -802,7 +804,6 @@ static int ahci_host_init(struct ata_pro
struct pci_dev *pdev = to_pci_dev(probe_ent->dev);
void __iomem *mmio = probe_ent->mmio_base;
u32 tmp, cap_save;
- u16 tmp16;
unsigned int i, j, using_dac;
int rc;
void __iomem *port_mmio;
@@ -836,9 +837,13 @@ static int ahci_host_init(struct ata_pro
writel(0xf, mmio + HOST_PORTS_IMPL);
(void) readl(mmio + HOST_PORTS_IMPL); /* flush */

- pci_read_config_word(pdev, 0x92, &tmp16);
- tmp16 |= 0xf;
- pci_write_config_word(pdev, 0x92, tmp16);
+ if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
+ u16 tmp16;
+
+ pci_read_config_word(pdev, 0x92, &tmp16);
+ tmp16 |= 0xf;
+ pci_write_config_word(pdev, 0x92, tmp16);
+ }

hpriv->cap = readl(mmio + HOST_CAP);
hpriv->port_map = readl(mmio + HOST_PORTS_IMPL);
@@ -1082,6 +1087,10 @@ static int ahci_init_one (struct pci_dev
if (have_msi)
hpriv->flags |= AHCI_FLAG_MSI;

+ /* JMicron-specific fixup: make sure we're in AHCI mode */
+ if (pdev->vendor == 0x197b)
+ pci_write_config_byte(pdev, 0x41, 0xa1);
+
/* initialize adapter */
rc = ahci_host_init(probe_ent);
if (rc)


2006-01-29 09:11:46

by Prakash Punnoor

[permalink] [raw]
Subject: Re: [PATCH] ahci: get JMicron JMB360 working

Am Sonntag Januar 29 2006 06:04 schrieb Jeff Garzik:

> This patch, against latest 2.6.16-rc-git, adds support for JMicron and
> fixes some code that should be Intel-only, but was being executed for
> all vendors.

Thx, works nicely here with JMicron jMB360 on an Asrock board.

Cheers,
--
(?= =?)
//\ Prakash Punnoor /\\
V_/ \_V


Attachments:
(No filename) (363.00 B)
(No filename) (189.00 B)
Download all attachments

2006-01-29 11:30:52

by Norbert Kiesel

[permalink] [raw]
Subject: Re: [PATCH] ahci: get JMicron JMB360 working

On Sun, 29 Jan 2006 00:04:34 -0500, Jeff Garzik wrote:

>
> I'll be sending this upstream sooner rather than later, since part of
> this is a needed bugfix. This is also a minor milestone: the first
> non-Intel AHCI implementation is working with the AHCI driver. AHCI is
> a nice SATA controller interface, and it's good to see other vendors
> using it. VIA is using it as well, and I hope to integrate a patch for
> VIA AHCI SATA support soon.
>
> This patch, against latest 2.6.16-rc-git, adds support for JMicron and
> fixes some code that should be Intel-only, but was being executed for
> all vendors.

Sounds very good, thanks! Does that mean the ASRock MB
http://www.asrock.com/product/product_939Dual-SATA2.htm will work? Docu
says "1 x SATA2 connector (based on PCI E SATA2 controller JMB360)".

Best,
Norbert


2006-01-29 13:37:33

by Prakash Punnoor

[permalink] [raw]
Subject: Re: [PATCH] ahci: get JMicron JMB360 working

Am Sonntag Januar 29 2006 12:01 schrieb Norbert Kiesel:
> On Sun, 29 Jan 2006 00:04:34 -0500, Jeff Garzik wrote:
> > I'll be sending this upstream sooner rather than later, since part of
> > this is a needed bugfix. This is also a minor milestone: the first
> > non-Intel AHCI implementation is working with the AHCI driver. AHCI is
> > a nice SATA controller interface, and it's good to see other vendors
> > using it. VIA is using it as well, and I hope to integrate a patch for
> > VIA AHCI SATA support soon.
> >
> > This patch, against latest 2.6.16-rc-git, adds support for JMicron and
> > fixes some code that should be Intel-only, but was being executed for
> > all vendors.
>
> Sounds very good, thanks! Does that mean the ASRock MB
> http://www.asrock.com/product/product_939Dual-SATA2.htm will work? Docu
> says "1 x SATA2 connector (based on PCI E SATA2 controller JMB360)".

Yes, I tested it a few hours ago.

--
(?= =?)
//\ Prakash Punnoor /\\
V_/ \_V


Attachments:
(No filename) (0.98 kB)
(No filename) (189.00 B)
Download all attachments

2006-01-29 18:22:42

by Mogens Valentin

[permalink] [raw]
Subject: Re: [PATCH] ahci: get JMicron JMB360 working

Prakash Punnoor wrote:
> Am Sonntag Januar 29 2006 06:04 schrieb Jeff Garzik:
>
>
>>This patch, against latest 2.6.16-rc-git, adds support for JMicron and
>>fixes some code that should be Intel-only, but was being executed for
>>all vendors.
>
>
> Thx, works nicely here with JMicron jMB360 on an Asrock board.

Interesting. On 111105, I wrote to Asrock about Linux libata support for
JM360, and mentioned Jeff Garzik as the developer/maintainer, along with
his requirements for implementing JM360 libata support, but never got a
reply from Asrock. I didn't get back to Garzik either; my apologies...

Due to other work, I didn't go on with that mobo, and partly because I
saw no other products using JM360.
Nvidia hving bought ULi, I wonder what'll happen to ILi and Asrock.
I know that (fabless) Jmicron does chipset design and integration.

939Dual-SATA2 is interesting as an upgrade board due to performance,
price, working PCIe/AGP and provisions for socket M2 via an adapter.
Whether this will actually work is of cause to be seen...
Now having libata SATA support gets it back into my thoughts.

@Prakash: Did you test with a SATA-2 disk?

--
Kind regards,
Mogens Valentin

2006-01-29 22:19:39

by Prakash Punnoor

[permalink] [raw]
Subject: Re: [PATCH] ahci: get JMicron JMB360 working

Am Sonntag Januar 29 2006 19:24 schrieb Mogens Valentin:
[...]
>
> 939Dual-SATA2 is interesting as an upgrade board due to performance,
> price, working PCIe/AGP and provisions for socket M2 via an adapter.
> Whether this will actually work is of cause to be seen...

Well, it at least seems to work nicely with an Athlon X2 and 4GB of RAM. :-)

> Now having libata SATA support gets it back into my thoughts.
>
> @Prakash: Did you test with a SATA-2 disk?

Nope, just plain SATA (I).

--
(?= =?)
//\ Prakash Punnoor /\\
V_/ \_V


Attachments:
(No filename) (562.00 B)
(No filename) (189.00 B)
Download all attachments