Hi, I have to admit that this particular PCI card (see below for lspci) never came back properly from suspend. Nowadays it no longer floods the kernel message buffer when coming back from sleep, but only if the PCI adapter is used afterwards and even then it now stops when I kill the application. So it's time to debug it a bit, I guess. When trying to use the DVB adapter from kaffeine after suspend I am greeted with this in dmesg: [ 3016.796083] stv0297_writereg: writereg error (reg == 0x80, val == 0x01, ret == -121) [ 3016.856103] stv0297_writereg: writereg error (reg == 0x80, val == 0x00, ret == -121) [ 3016.916111] stv0297_writereg: writereg error (reg == 0x81, val == 0x01, ret == -121) [ 3016.976091] stv0297_writereg: writereg error (reg == 0x81, val == 0x00, ret == -121) [ 3017.036114] stv0297_writereg: writereg error (reg == 0x00, val == 0x09, ret == -121) [ 3017.096109] stv0297_writereg: writereg error (reg == 0x01, val == 0x69, ret == -121) [ 3017.156112] stv0297_writereg: writereg error (reg == 0x03, val == 0x00, ret == -121) [ 3017.216121] stv0297_writereg: writereg error (reg == 0x04, val == 0x00, ret == -121) [ 3017.276112] stv0297_writereg: writereg error (reg == 0x07, val == 0x00, ret == -121) [ 3017.336123] stv0297_writereg: writereg error (reg == 0x08, val == 0x00, ret == -121) This looks very much like dvbc_philips_tdm1316l_inittab. -121 suggests EREMOTEIO as failure reason. I guess this means that the i2c device stopped accepting requests and needs a reset? The relevant frontend code is this: ret = i2c_transfer(state->i2c, &msg, 1); if (ret != 1) dprintk("%s: writereg error (reg == 0x%02x, val == 0x%02x, " "ret == %i)\n", __func__, reg, data, ret); Is it possible that the i2c adapter is only initialized on module insertion, but needs a reinit after coming back from suspend to clear this EREMOTEIO failure? Please Cc me on replies. Kind regards, Philipp Kern lspci -vv: 03:07.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01) Subsystem: Technotrend Systemtechnik GmbH Device 1010 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 32 (3750ns min, 9500ns max) Interrupt: pin A routed to IRQ 21 Region 0: Memory at fdcff000 (32-bit, non-prefetchable) [size=512] Kernel driver in use: budget_ci dvb dmesg of saa7146 init: [ 21.641493] saa7146: register extension 'budget_ci dvb'. [ 21.641655] alloc irq_desc for 21 on node 0 [ 21.641658] alloc kstat_irqs on node 0 [ 21.641670] budget_ci dvb 0000:03:07.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21 [ 21.641753] IRQ 21/: IRQF_DISABLED is not guaranteed on shared IRQs [ 21.641819] saa7146: found saa7146 @ mem ffffc9000064e000 (revision 1, irq 21) (0x13c2,0x1010). [ 21.641893] saa7146 (0): dma buffer size 192512 [ 21.641929] DVB: registering new adapter (TT-Budget-C-CI PCI) [ 21.642072] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:14.2/input/input7 [ 21.646355] HDA Intel 0000:01:05.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 21.646432] HDA Intel 0000:01:05.1: setting latency timer to 64 [ 21.677036] adapter has MAC addr = 00:d0:5c:04:78:43 [ 21.677407] input: Budget-CI dvb ir receiver saa7146 (0) as /devices/pci0000:00/0000:00:14.4/0000:03:07.0/input/input8 [ 21.932904] DVB: registering adapter 0 frontend 0 (ST STV0297 DVB-C)...
Attachment:
signature.asc
Description: Digital signature