PLEASE HELP! *** DANGER *** unable to remove socket power (***PART1***)

EX500R ex500r2001 at
Fri Nov 17 14:53:47 EST 2006

I posted this question a week ago. Unfortunately, got no help from this
mailing list.

So, I decided to find the problem myself.


static int yenta_dev_suspend (struct pci_dev *dev, pm_message_t state)
 struct yenta_socket *socket = pci_get_drvdata(dev);
 int ret;

 ret = pcmcia_socket_dev_suspend(&dev->dev, state);

 if (socket) {
  if (socket->type && socket->type->save_state)

  /* FIXME: pci_save_state needs to have a better interface */
  pci_read_config_dword(dev, 16*4, &socket->saved_state[0]);
  pci_read_config_dword(dev, 17*4, &socket->saved_state[1]);

   * Some laptops (IBM T22) do not like us putting the Cardbus
   * bridge into D3.  At a guess, some other laptop will
   * probably require this, so leave it commented out for now.
   /* pci_set_power_state(dev, 3); */

 return ret;

Apparently, my laptop DOES need to set the bridge into D3!!! I uncommented
that line and everything starts working.

Now is my question. I'm a software engineer with almost 20 years of
experience. But never developed under Linux before.

Can you explain how does it work in your community?

It seems to me, that someone found that putting cardbus bridge into D3 on
his particular machine does not work, commented out that line (at the same
time, making a lot of other laptops stop working) and committed the changes
into the main source branch. Is it how that should work? Then, I think that
there is something really-really wrong.

Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 

More information about the linux-pcmcia mailing list