Subject: Marvell 64360, MPSC Serial Console Problem

From: Suresh Chandra Mannava <[email-masked]>
Date: Thu, 21 Apr 2005 00:14:48 +0530

Dear Mr. Mark,

We designed a board with PPC 7410 and Marvell 64360 bridge.  We  
successfully  ported u-boot and Linux on to this board.

Thanks for your support.

We faced a problem in MPSC serial console part.  The problem is,  in 
Serial console data is received once after 32 characters are typed.

Any thing less than  32 characters  is not  echoed or not transmitted 
till the 32 character count is reached.

After carefully reviewing the code. We found that the receive buffer 
size is initialised to 32 bytes.
We made a small correction in the code by making the receive buffer size 
to 1
rxre->bufsize = 1;

After this modification, we got beautiful serial console working fine.

Here is the part of the code from "mpsc.c"

Function name "mpsc_init_rings"

    for (i = 0; i < MPSC_RXR_ENTRIES; i++) {
        rxre = (struct mpsc_rx_desc *)dp;

    /*    rxre->bufsize = cpu_to_be16(MPSC_RXBE_SIZE);*/ 
        rxre->bufsize = 1;  /* Modified Line*/
        rxre->bytecnt = cpu_to_be16(0);
        rxre->cmdstat = cpu_to_be32(SDMA_DESC_CMDSTAT_O |
                        SDMA_DESC_CMDSTAT_EI |
                        SDMA_DESC_CMDSTAT_F |
                        SDMA_DESC_CMDSTAT_L);
        rxre->link = cpu_to_be32(dp_p + MPSC_RXRE_SIZE);
        rxre->buf_ptr = cpu_to_be32(bp_p);

        dp += MPSC_RXRE_SIZE;
        dp_p += MPSC_RXRE_SIZE;
        bp += MPSC_RXBE_SIZE;
        bp_p += MPSC_RXBE_SIZE;
    }

Once again thank you very much for your support.

Regards,
Suresh Chandra Mannava