pia
static bool fru_pia_advance(u32 *addr, const unsigned char *pia, int len)
*addr += 1 + FRU_FIELD_LEN(pia, *addr);
const unsigned char *pia, u32 addr, int len)
fl = min3((size_t)FRU_FIELD_LEN(pia, addr),
memcpy(dst, pia + addr + 1, fl);
unsigned char buf[8], *pia;
pia = kzalloc(size, GFP_KERNEL);
if (!pia)
len = amdgpu_eeprom_read(adev->pm.fru_eeprom_i2c_bus, addr, pia, size);
kfree(pia);
csum += pia[size - 1];
kfree(pia);
pia, addr, len))
if (!fru_pia_advance(&addr, pia, len) ||
pia, addr, len))
if (!fru_pia_advance(&addr, pia, len) ||
pia, addr, len))
if (!fru_pia_advance(&addr, pia, len))
if (!fru_pia_advance(&addr, pia, len) ||
pia, addr, len))
if (!fru_pia_advance(&addr, pia, len))
if (!fru_pia_advance(&addr, pia, len) ||
pia, addr, len))
kfree(pia);
pia(p)->ppra = (pia(p)->ppra & 0x1f) | control_pc_to_mfc3(control);
return control_mfc3_to_pc(pia(p)->ppra & 0xe0);
status = status_mfc3_to_pc(pia(p)->ppra & 0x1f);
if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */
dummy = pia(this_port[i])->pprb; /* clear irq bit */
pia(p)->crb |= PIA_C1_ENABLE_IRQ;
pia(p)->crb &= ~PIA_C1_ENABLE_IRQ;
pia(p)->crb &= ~PIA_DDR; /* make data direction register visible */
pia(p)->pddrb = 255; /* all pins output */
pia(p)->crb |= PIA_DDR; /* make data register visible - default */
pia(p)->crb &= ~PIA_DDR; /* make data direction register visible */
pia(p)->pddrb = 0; /* all pins input */
pia(p)->crb |= PIA_DDR; /* make data register visible - default */
s->u.amiga.data = pia(p)->pprb;
pia(p)->crb &= ~PIA_DDR;
s->u.amiga.datadir = pia(p)->pddrb;
pia(p)->crb |= PIA_DDR;
s->u.amiga.status = pia(p)->ppra;
pia(p)->cra &= ~PIA_DDR;
s->u.amiga.statusdir = pia(p)->pddrb;
pia(p)->cra |= PIA_DDR;
pia(p)->pprb = s->u.amiga.data;
pia(p)->crb &= ~PIA_DDR;
pia(p)->pddrb = s->u.amiga.datadir;
pia(p)->crb |= PIA_DDR;
pia(p)->ppra = s->u.amiga.status;
pia(p)->cra &= ~PIA_DDR;
pia(p)->pddrb = s->u.amiga.statusdir;
pia(p)->cra |= PIA_DDR;
struct pia *pp;
if (!request_mem_region(piabase, sizeof(struct pia), "PIA"))
release_mem_region(piabase, sizeof(struct pia));
release_mem_region(ZTWO_PADDR(this_port[i]->private_data), sizeof(struct pia));
#define pia(dev) ((struct pia *)(dev->base))
dummy = pia(p)->pprb; /* clears irq bit */
pia(p)->pprb = data;
return pia(p)->pprb;