Skip to contentSkip to conversation

MIPS: about the function of the octeon_twsi_set_addr8

U-Boot-Users wangjiankun820624 1 participant 1 message May 27, 2008

lore
Share & tools
lore
#0 lore raw

hello!
the field of [31:0] in the register MIO_TWS_SW_TWSI is data field, in the following function the low-8-bit of the 16-bit address is loaded in the MIO_TWS_SW_TWSI[7:0]. WHY? int octeon_twsi_set_addr8(uint8_t dev_addr, uint16_t addr)

{
    /* 16 bit internal address ONLY */
    uint64_t val;
    octeon_write64(CVMX_MIO_TWS_SW_TWSI,0x8000000000000000ull | ( 0x0ull << 57) | (((uint64_t)dev_addr) << 40) | (addr & 0xff)); // tell twsii to do the read
    while (octeon_read64(CVMX_MIO_TWS_SW_TWSI)&0x8000000000000000ull);
    val = octeon_read64(CVMX_MIO_TWS_SW_TWSI);
    if (!(val & 0x0100000000000000ull)) {
        return -1;
    }
    return(0);
}

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20080527/b06daccf/attachment.htm