ssb-pcmcia: IRQ and DMA related fixes
PATCH 1/1 ssb-pcmcia: IRQ and DMA related fixes
Here come some IRQ and DMA related fixes for the ssb PCMCIA-host code. Not much to say, actually. I think the patch explains itself.
---
For 2.6.25
drivers/ssb/pcmcia.c +22 -14
@@ -25,17 +25,12 @@/* Define the following to 1 to enable a printk on each coreswitch. */ #define SSB_VERBOSE_PCMCIACORESWITCH_DEBUG 0/* PCMCIA configuration registers */ -#define SSB_PCMCIA_CORECTL 0x00 -#define SSB_PCMCIA_CORECTL_RESET 0x80/* Core reset */ -#define SSB_PCMCIA_CORECTL_IRQEN 0x04/* IRQ enable */ -#define SSB_PCMCIA_CORECTL_FUNCEN 0x01/* Function enable */ -#define SSB_PCMCIA_CORECTL2 0x80#define SSB_PCMCIA_ADDRESS0 0x2E#define SSB_PCMCIA_ADDRESS1 0x30#define SSB_PCMCIA_ADDRESS2 0x32#define SSB_PCMCIA_MEMSEG 0x34#define SSB_PCMCIA_SPROMCTL 0x36#define SSB_PCMCIA_SPROMCTL_IDLE 0
@@ -668,42 +663,55 @@ static ssize_t ssb_pcmcia_attr_sprom_sto } static DEVICE_ATTR(ssb_sprom, 0600, ssb_pcmcia_attr_sprom_show, ssb_pcmcia_attr_sprom_store); +static int ssb_pcmcia_cor_setup (struct ssb_bus *bus,u8 cor) +{ +u8 val; +int err; + + err =ssb_pcmcia_cfg_read (bus, cor, &val); +if (err) +return err; + val &= ~COR_SOFT_RESET ; + val |=COR_FUNC_ENA |COR_IREQ_ENA |COR_LEVEL_REQ ; + err =ssb_pcmcia_cfg_write (bus, cor, val); +if (err) +return err; +msleep (40 ); + +return 0 ; +} +void ssb_pcmcia_exit (struct ssb_bus *bus) {if (bus->bustype !=SSB_BUSTYPE_PCMCIA )return ;device_remove_file (&bus->host_pcmcia->dev, &dev_attr_ssb_sprom); }int ssb_pcmcia_init (struct ssb_bus *bus) { -u8 val, offset;int err;if (bus->bustype !=SSB_BUSTYPE_PCMCIA )return 0 ;/* Switch segment to a known state and sync * bus->mapped_pcmcia_seg with hardware state. */ ssb_pcmcia_switch_segment (bus,0 ); -/* Init IRQ routing */ -if (bus->chip_id ==0x4306 ) - offset =SSB_PCMCIA_CORECTL ; -else - offset =SSB_PCMCIA_CORECTL2 ; - err =ssb_pcmcia_cfg_read (bus, offset, &val); +/* Init the COR register. */ + err =ssb_pcmcia_cor_setup (bus,CISREG_COR );if (err) goto error; - val |=SSB_PCMCIA_CORECTL_IRQEN |SSB_PCMCIA_CORECTL_FUNCEN ; - err =ssb_pcmcia_cfg_write (bus, offset, val); +/* Some cards also need this register to get poked. */ + err =ssb_pcmcia_cor_setup (bus,CISREG_COR +0x80 );if (err) goto error; bus->sprom_size =SSB_PCMCIA_SPROM_SIZE ;mutex_init (&bus->sprom_mutex); err =device_create_file (&bus->host_pcmcia->dev, &dev_attr_ssb_sprom);
drivers/ssb/main.c +1 -1
@@ -1061,15 +1061,15 @@ void ssb_device_disable(struct ssb_devicEXPORT_SYMBOL (ssb_device_disable);u32 ssb_dma_translation (struct ssb_device *dev) {switch (dev->bus->bustype) {case SSB_BUSTYPE_SSB : +case SSB_BUSTYPE_PCMCIA :return 0 ;case SSB_BUSTYPE_PCI : -case SSB_BUSTYPE_PCMCIA :return SSB_PCI_DMA ; }return 0 ; }EXPORT_SYMBOL (ssb_dma_translation);
Quoted 8 lines · Michael Buesch
Here come some IRQ and DMA related fixes for the ssb PCMCIA-host code. Not much to say, actually. I think the patch explains itself.
Signed-off-by Michael Buesch <[email protected]>---
For 2.6.25
This seems to build upon these two patches:
commit e7ec2e3230633a858af1b0b359f6c4670dbeb997
Author: Michael Buesch <[email protected]> Date: Mon Mar 10 17:26:32 2008 +0100
ssb: Add SPROM/invariants support for PCMCIA devices
This adds support for reading/writing the SPROM invariants for PCMCIA based devices.
commit ffc7689ddae5cbe12bde437ae0f2b386d568b5cd
Author: Michael Buesch <[email protected]> Date: Wed Feb 20 19:08:10 2008 +0100
ssb: Add support for 8bit register access
This adds support for 8bit wide register reads/writes. This is needed in order to support the gigabit ethernet core.
Those are not in 2.6.25. Is 2.6.26 OK for this one?
John
Signature · 2 lines
John W. Linville [email protected]
Quoted 30 lines · On Tuesday 01 April 2008 21:27:33 John W. Linville wrote:
Quoted 8 lines · Michael Buesch
Here come some IRQ and DMA related fixes for the ssb PCMCIA-host code. Not much to say, actually. I think the patch explains itself.
Signed-off-by Michael Buesch <[email protected]>---
For 2.6.25
This seems to build upon these two patches:
commit
e7ec2e3230633a858af1b0b359f6c4670dbeb997Author: Michael Buesch <[email protected]> Date: Mon Mar 10 17:26:32 2008 +0100ssb: Add SPROM/invariants support for PCMCIA devices
This adds support for reading/writing the SPROM invariants for PCMCIA based devices.
Signed-off-by Michael Buesch <[email protected]>Signed-off-by John W. Linville <[email protected]>commit
ffc7689ddae5cbe12bde437ae0f2b386d568b5cdAuthor: Michael Buesch <[email protected]> Date: Wed Feb 20 19:08:10 2008 +0100ssb: Add support for 8bit register access
Quoted 7 lines
This adds support for 8bit wide register reads/writes. This is needed in order to support the gigabit ethernet core.
Signed-off-by Michael Buesch <[email protected]>Signed-off-by John W. Linville <[email protected]>Those are not in 2.6.25. Is 2.6.26 OK for this one?
Yeah, right. I was a little bit confused what was in 2.6.25 :)
Signature · 1 line
Greetings Michael.