static int c4_peek(avmcard *card, unsigned long off, unsigned long *valuep) { if (wait_for_doorbell(card, HZ/10) < 0) return -1; c4outmeml(card->mbase+MBOX_PEEK_POKE, off); c4outmeml(card->mbase+DOORBELL, DBELL_RNWR | DBELL_ADDR); if (wait_for_doorbell(card, HZ/10) < 0) return -1; *valuep = c4inmeml(card->mbase+MBOX_PEEK_POKE); return 0; }
static int c4_poke(avmcard *card, unsigned long off, unsigned long value) { if (wait_for_doorbell(card, HZ/10) < 0) return -1; c4outmeml(card->mbase+MBOX_PEEK_POKE, off); c4outmeml(card->mbase+DOORBELL, DBELL_ADDR); if (wait_for_doorbell(card, HZ/10) < 0) return -1; c4outmeml(card->mbase+MBOX_PEEK_POKE, value); c4outmeml(card->mbase+DOORBELL, DBELL_DATA | DBELL_ADDR); return 0; }