On 24-04-08 08:28, jeyram jadenthradevan wrote:

i am a beginner level in driver programming. please help to solve this problem.

this is a part of the internal modem driver coding. this is for intel chip set internal modem.

-------------------------------------------------------------------------------------------------------------------------------------------------------------

// ZT_MAX_CHUNKSIZE = 8


wc->writechunk = (int *)pci_alloc_consistent(pdev, ZT_MAX_CHUNKSIZE * 2 * 2 * 2 * 4, &wc->writedma);
    if (!wc->writechunk) {
        printk("wcfxo: Unable to allocate DMA-able memory\n");
        if (wc->freeregion)
            release_region(wc->ioaddr, 0xff);
        return -ENOMEM;
    }

wc->readchunk = wc->writechunk + ZT_MAX_CHUNKSIZE * 4; /* in doublewords */ wc->readdma = wc->writedma + ZT_MAX_CHUNKSIZE * 16; /* in bytes */

---------------------------------------------------------------------------------------------------------------------------------------------------------------


here they are creating 2 chunks for writing and reading.


but i couldn't understand this line.
wc->readdma = wc->writedma + ZT_MAX_CHUNKSIZE * 16;

why are they using ZT_MAX_CHUNKSIZE * 16 for allocating read chunk?

I gather "a chunk" is some entity consisting of 4 32-bit datums.

wc->writechunk is an int * I see from the cast and (I suppose) wc->writedma is a char *. C pointer arrithmetic says p + i = (char *)p + i * sizeof(*p) meaning both would end up at the same numeric value. I guess that was the question?

Rene.

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ

  • DMA jeyram jadenthradevan
    • Re: DMA Rene Herman

Reply via email to