I think I've found the problem:

------------------------------------------------------------------------
static int cinergyt2_fe_set_frontend(struct dvb_frontend *fe,
                                  struct dvb_frontend_parameters *fep)
{
        struct cinergyt2_fe_state *state = fe->demodulator_priv;
        struct dvbt_set_parameters_msg param;
        char result[2];
        int err;

        param.cmd = CINERGYT2_EP1_SET_TUNER_PARAMETERS;
        param.tps = cpu_to_le16(compute_tps(fep));
        param.freq = cpu_to_le32(fep->frequency / 1000);
        param.bandwidth = 8 - fep->u.ofdm.bandwidth - BANDWIDTH_8_MHZ;

        err = dvb_usb_generic_rw(state->d,
                        (char *)&param, sizeof(param),
                        result, sizeof(result), 0);
------------------------------------------------------------------------

As dvbt_set_parameters_msg is declared with __attribute__((packed)), its
alignment is 8 bits.  In fact, cinergyt2_fe_set_frontend()'s param variable
is not aligned on a 32-bit boundary. Note that param is passed to 
usb_bulk_msg().
This seems to cause DMA problems on my hardware (Atom N270 + 945GSE + ICH7M).

I hope that I'm not talking to a black hole.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to