Modify

Opened 8 years ago

Closed 7 years ago

Last modified 4 years ago

#7488 closed defect (wontfix)

HFC-multi on AR71xx: Failed at pci init

Reported by: romary@… Owned by: developers
Priority: normal Milestone: Barrier Breaker 14.07
Component: packages Version: Trunk
Keywords: Cc:

Description (last modified by jow)

Hello,

I try to run an ISDN mini-PCI card based on the HFC-multi driver from mISDN V2.
I am using linux kernel 2.6.32.14, mISDN and mISDNuser from git ( available at http://www.linux-call-router.de/download/lcr-1.7/ )
In fact the hfcmulti.c i use is the same as the GIT HEAD.

Everything works fine on x86 target CPU ( I can receive voice call with LCR), that's great !

However on MIPS CPU (atheros AR71xx), i have a big issue while driver does init of the HFC-4S chipset :

lspci
xxxxxxxxxxxxxxxxxxxxxxxxx
00:11.0 ISDN controller: Cologne Chip Designs GmbH ISDN network Controller [HFC-4S] (rev 01)
xxxxxxxxxxxxxxxxxxxxxxxxx

Here is the kernel log message :

Modular ISDN core version 1.1.21
NET: Registered protocol family 34
DSP modul 2.0
mISDN_dsp: DSP clocks every 80 samples. This equals 1 jiffies.
mISDN: HFC-multi driver 2.03
HFC-multi: card manufacturer: 'Cologne Chip AG' card name: 'HFC-4S OpenVox' clock: double
PCI: Enabling device 0000:00:11.0 (0000 -> 0002)
card 0: defined at MEMBASE 0xb0000000 (0x10000000) IRQ 48 HZ 100 leds-type 0
HFC_multi: unknown CHIP_ID:ff
init card returns -5
hfc_multi: probe of 0000:00:11.0 failed with error -5

It seems that this code is not running well (hfcmulti.c@1144) :

         /* revision check */
         if (debug & DEBUG_HFCMULTI_INIT)
                 printk(KERN_DEBUG "%s: entered\n", __func__);
         val = HFC_inb(hc, R_CHIP_ID);
         if ((val >> 4) != 0x8 && (val >> 4) != 0xc && (val >> 4) != 0xe &&
             (val >> 1) != 0x31) {
                 printk(KERN_INFO "HFC_multi: unknown CHIP_ID:%x\n", (u_int)val);
                 err = -EIO;
                 goto out;
         }

I tried to change iomode kernel module param to values 0,1,2,3 but is has not effect on the result : pci init failed.

I would like to know of anyone has encounter this issue, or if anyone has a idea to help me to solve this issue.

I Would like to compare this driver with another wihich works well on mips BE, in order to compare the source code.

Does anyone has any idea?

Regards,

Romary Sonrier

Attachments (2)

misdn12lcr-ar71xx.log (2.9 KB) - added by anonymous 8 years ago.
insmod log on ar71xx
misdn12lcr-x86.log (6.3 KB) - added by anonymous 8 years ago.
insmod log on x86

Download all attachments as: .zip

Change History (8)

comment:1 Changed 8 years ago by jow

  • Description modified (diff)

Changed 8 years ago by anonymous

insmod log on ar71xx

Changed 8 years ago by anonymous

insmod log on x86

comment:2 Changed 8 years ago by anonymous

I found a strange message from the kernel boot log :

pci 0000:00:13.0: BAR 0: can't allocate I/O resource [0x00-0x00]:

dmesg :

MIPS: machine is Ubiquiti RouterStation Pro
registering PCI controller with io_map_base unset
bio: create slab <bio-0> at 0
pci 0000:00:00.0: reg 10 32bit mmio pref: [0x000000-0xfffffff]
pci 0000:00:00.0: reg 14 io port: [0x00-0xff]
pci 0000:00:00.0: supports D1 D2
pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
pci 0000:00:00.0: PME# disabled
pci 0000:00:13.0: reg 10 io port: [0x00-0x07]
pci 0000:00:13.0: reg 14 32bit mmio: [0x000000-0x000fff]
pci 0000:00:13.0: supports D1 D2
pci 0000:00:13.0: PME# supported from D0 D1 D2 D3hot
pci 0000:00:13.0: PME# disabled
pci 0000:00:13.0: BAR 0: can't allocate I/O resource [0x00-0x00]
PCI: mapping irq 50 to pin1@0000:00:13.0

I suspect the ar71xx pci bus not be be compliante with the pci chipset HFC-multi.
Doesn't any one has any skill on the AR71XX PCI layer ?

Thanks!

comment:3 Changed 8 years ago by anonymous

In the kernel tree, arch/mips/pci/pci-ar71xx.c :

static struct resource ar71xx_pci_io_resource = {
        .name           = "PCI IO space",
        .start          = 0,
        .end            = 0,
        .flags          = IORESOURCE_IO,
};

static struct resource ar71xx_pci_mem_resource = {
        .name           = "PCI memory space",
        .start          = AR71XX_PCI_MEM_BASE,
        .end            = AR71XX_PCI_MEM_BASE + AR71XX_PCI_MEM_SIZE - 1,
        .flags          = IORESOURCE_MEM
};

static struct pci_controller ar71xx_pci_controller = {
        .pci_ops        = &ar71xx_pci_ops,
        .mem_resource   = &ar71xx_pci_mem_resource,
        .io_resource    = &ar71xx_pci_io_resource,
};

So pci_io_resource size if equal to 0 , may be that's why i get the error message

pci 0000:00:13.0: BAR 0: can't allocate I/O resource [0x00-0x00]

Does it means that there is no pci_io_resource available on AR71XX chipset ?
Or is this a lake of the pci driver of the ar71XX ?

comment:4 Changed 7 years ago by anonymous

static struct resource ar71xx_pci_io_resource = {
        .name           = "PCI IO space",
        .start          = 0x1000,
        .end            = 0xffff,
        .flags          = IORESOURCE_IO,
};

modify as above, the "pci 0000:00:13.0: BAR 0: can't allocate I/O resource [0x00-0x00]: " will correct, but I don't know the device work or not.

comment:5 Changed 7 years ago by nbd

  • Resolution set to wontfix
  • Status changed from new to closed

The controller has no I/O resource range, as far as I know, this cannot work.

comment:6 Changed 4 years ago by jow

  • Milestone changed from Attitude Adjustment 12.09 to Barrier Breaker 14.07

Milestone Attitude Adjustment 12.09 deleted

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.