Skip to contentSkip to conversation

DIFF 2.6.0-pa3 suckyio USB support

parisc-linux Grant Grundler 2 participants 2 messages Dec 21, 2003 – Dec 22, 2003

lore
Share & tools
lore
#0 lore raw

Hi all,
I finally figured out why suckyio USB was broken...lots of little things. I still can't start X11 but it's likely some other issue (.config file options likely - I'll post a seperate mail on that)

Diff is at:

	ftp://ftp.parisc-linux.org/patches/diff-2.6.0-suckyio-03

I don't have time to testing this on all variants (a500 and c3k 64-bit). Please test, comment, and commit if it's looking good. I'll be around a bit but not really available to commit a final version until after christmas.

Comments on PCI Config space, diffstat, and comments on the diff follow.

FYA, the final problem was writes to PCI Configuration space. PCI is by nature a 32-bit bus and byte writes to config space seems to be broken. I'd like to blame suckyio for this but not sure I can. It might be broken for all systems with LBA. Or maybe my proto-C3K (v2.1 Elroys) is just broken. And I just sent my only other production C3000 to someone who is having a very happy christmas... Anyway, using 32-bit writes got everything working and seems safer.

grundler <514>diffstat ~/diff-2.6.0-suckyio-03

 Makefile                         |    2 
 arch/parisc/kernel/firmware.c    |   63 +++++++++-
 arch/parisc/kernel/inventory.c   |   14 --
 drivers/net/tulip/media.c        |   10 +
 drivers/parisc/Kconfig           |    3 
 drivers/parisc/iosapic.c         |  154 ++++++++++++--------------
 drivers/parisc/iosapic_private.h |   20 +--
 drivers/parisc/sba_iommu.c       |   15 ++
 drivers/parisc/superio.c         |  231 +++++++++++++++++++--------------------
 include/asm-parisc/pci.h         |    1 
 include/asm-parisc/pdc.h         |    6 -
 include/asm-parisc/superio.h     |   42 ++++---
 12 files changed, 313 insertions(+), 248 deletions(-)

Here's a summary of changes:
o properly document the fact that SuckyIO uses INTD of the USB device to get the interrupt routine for "Legacy IO" devices. Restructured the hacks in iosapic_fixup_irq(), superio_fixup_irq() and superio_init() to make the initialization sequence a bit more obvious.

o simplify the suckyio serial_init() to use static initializers. Registering each port is really only three lines of code now.

o fix iosapic bug where two EIR bits where getting allocated in the case where two "devices" used the same iosapic IRQ line. Only one was actually used.
Simple check midway down in iosapic_fixup_irq() takes care of that.

The two functions of built-in SCSI 53c896 on C3000 exposed this bug. Both use INT A.
Normally a multifuction device like 53c896 will use INT A and INT B.

o remove "vi_" prefix from iosapic vector fields.
Code is a bit more readable now.
(sorry - it itched really badly :^)

o moved pdc_io_reset_devices() call to sba code. It's only needed for SBA systems which are NOT PAT PDC. Does NOT interfere with serial or pdc console.

o added pdc_pci_config() accessor primitives but have not tested them. I thought I would need them but don't (yet). Left them in place in case someone cares to convert all the cruft in lba_pci.c to use PDC calls instead....PAT PDC has a different PDC interface but I can deal with that if someone takes care of "legacy PDC" systems.

o added gmmio_base field and advertise MMIO resources above 4GB on 64-bit systems. Not well tested and may want to back this out if it even smells like a problem.

o updated comments tulip/media.c and reduce timeout in tulip_select_media() to 1ms.

o updated Kconfig help for unsupported CONFIG_PCI_EPIC (V-class only)

o added copyright notice to files I've touched.

enjoy!
grant

#1 lore raw

RE: [parisc-linux] DIFF 2.6.0-pa3 suckyio USB support (+ide-cdrom success)

Hi Grant,

Very great that was THE patch I am waiting for.

Success fully tested on the b2k with k-2.6.0-pa4 32bit (still have to see for 64bit), that you could can guess as it is a model near c3k. What I test also with success :)) is the ide-cdrom wich seems to works fine (find about 5245 file on a iso-cd, tar tzslpf a 41Mb tgz file, vi some other files, ...)

Here are the additional paramters I used:
#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives #
# CONFIG_BLK_DEV_IDEDISK is not set CONFIG_BLK_DEV_IDECD=y

#
# IDE chipset support/bugfixes
#
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
CONFIG_BLK_DEV_ADMA=y
CONFIG_BLK_DEV_IDEDMA=y

Note that I have to add generic dma support because without I got following errors:
CC drivers/ide/setup-pci.o
drivers/ide/setup-pci.c: In function `ide_hwif_setup_dma':
drivers/ide/setup-pci.c:511: warning: implicit declaration of function `ide_setup_dma'
CC drivers/ide/ide-proc.o
[snip]
LD .tmp_vmlinux1
drivers/built-in.o(.text.ide_hwif_setup_dma+0x150): In function `ide_hwif_setup_dma':
: undefined reference to `ide_setup_dma'
make: *** [.tmp_vmlinux1] Error 1.

hth,
Joel

Quoted 8 lines

-- Original Message --
Date: Sat, 20 Dec 2003 22:10:41 -0700
From: Grant Grundler <[email protected]>
To: [email protected]
Subject: [parisc-linux] DIFF 2.6.0-pa3 suckyio USB support

Hi all,

I finally figured out why suckyio USB was broken...lots of little things. I still can't start X11 but it's likely some other issue (.config file options likely - I'll post a seperate mail on that)

Diff is at:

	ftp://ftp.parisc-linux.org/
Quoted 1 line

atches/diff-2.6.0-suckyio-03

I don't have time to testing this on all variants (a500 and c3k 64-bit). Please test, comment, and commit if it's looking good. I'll be around a bit but not really available to commit a final version until after chris

Quoted 1 line

mas.

Comments on PCI Config space, diffstat, and comments on the diff follow.

FYA, the final problem was writes to PCI Configuration space. PCI is by nature a 32-bit bus and byte writes to config space seems to be broken. I'd like to blame suck

Quoted 1 line

io for this but not sure I can.

It might be broken for all systems with LBA. Or maybe my proto-C3K (v2.1 Elroys) is just broken. And I just sent my only other production C3000 to someone who is having a very happy christmas... Anyway, using 32-bit

Quoted 1 line

rites got everything working and seems safer.

grundler <514>diffstat ~/diff-2.6.0-suckyio-03

 Makefile                         |    2 
 arch/parisc/kernel/firmware.c    |   63 +++++++++-
 arch/parisc/kernel/inventory.c   |   14 --

drivers/net/

Quoted 1 line

ulip/media.c | 10 +

 drivers/parisc/Kconfig           |    3 
 drivers/parisc/iosapic.c         |  154 ++++++++++++--------------
 drivers/parisc/iosapic_private.h |   20 +--
 drivers/parisc/sba_iommu.c       |   15 ++

drivers/parisc/sup

Quoted 1 line

rio.c | 231 +++++++++++++++++++--------------------

 include/asm-parisc/pci.h         |    1 
 include/asm-parisc/pdc.h         |    6 -
 include/asm-parisc/superio.h     |   42 ++++---
 12 files changed, 313 insertions(+), 248 deletions(-
Quoted 1 line

Here's a summary of changes:
o properly document the fact that SuckyIO uses INTD of the USB device to get the interrupt routine for "Legacy IO" devices. Restructured the hacks in iosapic_fixup_irq(), superio_fixup_irq() and superio_init()

Quoted 1 line

to make the initialization sequence a bit more obvious.

o simplify the suckyio serial_init() to use static initializers. Registering each port is really only three lines of code now.

o fix iosapic bug where two EIR bits where getting allocated

Quoted 1 line

in the

case where two "devices" used the same iosapic IRQ line. Only one was actually used.
Simple check midway down in iosapic_fixup_irq() takes care of that.

The two functions of built-in SCSI 53c896 on C3000 exposed this bug. Both u

Quoted 1 line

e INT A.

Normally a multifuction device like 53c896 will use INT A and INT B.

o remove "vi_" prefix from iosapic vector fields.
Code is a bit more readable now.
(sorry - it itched really badly :^)

o moved pdc_io_reset_devices() call to s

Quoted 1 line

a code. It's only needed for

SBA systems which are NOT PAT PDC. Does NOT interfere with serial or pdc console.

o added pdc_pci_config() accessor primitives but have not tested them. I thought I would need them but don't (yet). Left them in

Quoted 1 line

lace

in case someone cares to convert all the cruft in lba_pci.c to use PDC calls instead....PAT PDC has a different PDC interface but I can deal with that if someone takes care of "legacy PDC" systems.

o added gmmio_base field and adver

Quoted 1 line

ise MMIO resources above 4GB on

64-bit systems. Not well tested and may want to back this out if it even smells like a problem.

o updated comments tulip/media.c and reduce timeout in tulip_select_media() to 1ms.

o updated Kconfig help fo

Quoted 1 line

unsupported CONFIG_PCI_EPIC (V-class only)

o added copyright notice to files I've touched.

enjoy!
grant
_______________________________________________
parisc-linux mailing list
[email protected]
http://lists.parisc-linu

Quoted 1 line

.org/mailman/listinfo/parisc-linux

-------------------------------------------------------------------------
Tiscali ADSL: 12 mois à 29,50 €/mois! L'Internet rapide, c'est pour tout le monde.
http://reg.tiscali.be/default.asp?lg=fr