Modify

Opened 6 years ago

Closed 6 years ago

Last modified 4 years ago

#10474 closed defect (wontfix)

lspci RC6 does not list anything

Reported by: Rolf Leggewie <dev.openwrt.org@…> Owned by: developers
Priority: normal Milestone: Barrier Breaker 14.07
Component: packages Version: Backfire 10.03.1 RC6
Keywords: Cc:

Description

The lspci command in RC6 does nothing (official image and self-compiled image from currrent backfire branch) for kernel 2.6

In Backfire (10.03.1-RC6, r28680):

root@OpenWrt:~# lspci 
root@OpenWrt:~# 

The same command works fine in a self-compiled 2.4 image (Backfire (10.03.1-RC6, r29275))

root@OpenWrt:/# lspci 
00:00.0 FLASH memory: Broadcom Corporation Sentry5 Chipcommon I/O Controller (rev 03)
00:01.0 Ethernet controller: Broadcom Corporation Sentry5 Ethernet Controller (rev 03)
00:02.0 MIPS: Broadcom Corporation BCM3302 Sentry5 MIPS32 CPU (rev 03)
00:03.0 USB controller: Broadcom Corporation Device 471a (rev 03)
00:03.1 USB controller: Broadcom Corporation Device 471a (rev 03)
00:04.0 RAM memory: Broadcom Corporation Sentry5 DDR/SDR RAM Controller (rev 03)
00:05.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 03)
00:06.0 Network controller: Broadcom Corporation BCM47xx/53xx RoboSwitch Core (rev 03)
root@OpenWrt:/#

The device is a Catch Tec CW 5354U.

Attachments (0)

Change History (5)

comment:1 Changed 6 years ago by nbd

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

On the 2.4 image, the PCI bus was emulated. Those devices were actually ssb cores.

2.6 uses the native ssb code and does not do any PCI emulation.

comment:2 Changed 5 years ago by Rolf

how do you get the information that used to be put out from lspci, then? http://linuxwireless.org/en/users/Drivers/b43#Supported_devices requires this to identify the chipset.

comment:3 Changed 5 years ago by Zajec

@Rolf: take a look at hndpci.c (hndpci_init_cores) and siutils.c (si_corepciid). SSB and BCMA buses don't have PCI devices, they are all faked by Broadcom's code. Everything is facked (hardcoded): vendor, device, revision, class, subclass.

In Linux's kernel we don't play with all that faking, we just expose devices as they are. It means as SSB or BCMA cores, identified by manufacturer, device and id (and class in case of BCMA). See include/linux/mod_devicetable.h (struct ssb_device_id and struct bcma_device_id).

b43 driver doesn't really registers itself as a PCI driver. Take a look at b43/main.c (b43_ssb_tbl and b43_bcma_tbl). It registers itself as a SSB and BCMA driver.

So they order is something like this:
1) ssb loads
2) ssb detects all cores (devices) available
3) ssb registers (almost) all cores (devices) as a SSB devices
4) b43 registers as a ssb driver
5) Linux detects there is a ssb device that b43 can handle. It calls b43_bcma_probe
6) b43 operates on the ssb core (device)

The list that is available at b43's wiki page is actually a list of PCI devices containing *ssb* or *bcma* bus. So ever if you can see (for example) 14e4:4318, it's a card with ssb bus containing few cores (devices) like a ChipCommon, PCI and 80211. It has to be scanned & initalized by "ssb", and they b43 loads to support just a 80211 core (not the whole PCI card!).

comment:4 Changed 5 years ago by Zajec

If you want to know list of all devices on ssb/bcma core, just use dmesg | egrep "ssb|bcma". It looks like this (the example is for bcma, not ssb, but that's pretty similar):

bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x1F, class 0x0)
bcma: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, rev 0x11, class 0x0)
bcma: bus0: Core 2 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x00, class 0x0)
bcma: bus0: Core 3 found: MIPS 74K (manuf 0x4A7, id 0x82C, rev 0x01, class 0x0
bcma: bus0: Core 4 found: USB 2.0 Host (manuf 0x4BF, id 0x819, rev 0x04, class 0x0)
bcma: bus0: Core 5 found: PCIe (manuf 0x4BF, id 0x820, rev 0x0E, class 0x0)
bcma: bus0: Core 6 found: DDR1/DDR2 Memory Controller (manuf 0x4BF, id 0x82E, rev 0x01, class 0x0)
bcma: bus0: Core 7 found: Internal Memory (manuf 0x4BF, id 0x80E, rev 0x07, class 0x0)
bcma: bus0: Core 8 found: I2S (manuf 0x4BF, id 0x834, rev 0x00, class 0x0)

You can also browse /sys/bus/ssb/devices/, or ever write an userspace utility that will scan that directory and print a list of devices on a stdout :)

comment:5 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.