[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 2.6.0 & PCMCIA



On Fri, 26 Dec 2003 19:10, "Bruce" <bestb@sympatico.ca> wrote:

> From what I can gather, there has been a major move of where pcmcia stuff
> happens from my previous (2.4.22) kernel. Unfortunately, I haven't been
> able to find anything telling me _what_ this move requires/entails beyond
> the following cryptic information in /usr/src/linux/Documentation/Changes:

The big changes are two:

[1] You have to use the pcmcia code that's in the kernel, not the
standalone pcmcia code developed over many years by David Hinds. For
Debian, I *think* that this means that you want the pcmcia-cs package,
but not the pcmcia-cs-modules-xxxxxx package. That at least, works on
my laptop running Debian testing/unstable and kernel 2.6.0.

[2] Many PCMCIA cards are now handled by the hotplug subsystem rather
than by the pcmcia subsystem. More exactly, for these cards, the
pcmcia subsystem is responsible for detecting the card insertion, for
identifying the card, and then for asking the PCI subsystem to
enumerate the newly attached device(s).  Once that's done, the hotplug
subsystem take over and loads the needed kernel-modules.

What this means in practice is that if you have one of these cards,
you need to enable both PCMCIA and HOTPLUG support in the kernel
configuration. In the PCMCIA section you will usually need:

# PCMCIA/CardBus support
#
CONFIG_PCMCIA=m
CONFIG_YENTA=m
CONFIG_CARDBUS=y

(Basically, you need to make sure that you end up with 3
pcmcia-related modules to load: pcmcia_core, yenta_socket, and ds.)

And in addition, you will want to enable:

CONFIG_HOTPLUG=y

# PCI Hotplug Support
#
CONFIG_HOTPLUG_PCI=m

For many or most systems, you will apparently in addition need:

CONFIG_ISA=y

(Of course you'll need the particular kernel-module for your wireless
card as well.)

The above holds true for all 32-bit Cardbus controllers (which is, I
think, what is mostly found on recent laptops ???). You can confirm
whether or not you have such a card with lspci -v. If you have such a
card you will see something like:

2:03.0 CardBus bridge: Texas Instruments PCI4410 PC card Cardbus Controller (rev 02)
	Subsystem: Mitac: Unknown device 8170
	Flags: bus master, medium devsel, latency 168, IRQ 11
	Memory at 20000000 (32-bit, non-prefetchable) [size=4K]
	Bus: primary=02, secondary=03, subordinate=06, sec-latency=176
	Memory window 0: 20400000-207ff000 (prefetchable)
	Memory window 1: 20800000-20bff000
	I/O window 0: 00004000-000040ff
	I/O window 1: 00004400-000044ff
	16-bit legacy interface ports at 0001

Then, if you haven't done so already, you'll need to apt-get install
hotplug (which is, in any case, a wonderful package).

When you have all this in place, everything should just work without
further adjustment. In my own case, I had to edit /etc/default/pcmcia
so that it read:

# Defaults for pcmcia (sourced by /etc/init.d/pcmcia)
PCMCIA=yes
PCIC=yenta_socket   # was =i82365
PCIC_OPTS=
CORE_OPTS=
CARDMGR_OPTS=

This is for an Orinoco Gold wireless card. 

Good luck,

Jim



Reply to: