pia
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);
memcpy(fru_info->manufacturer_name, pia + addr + 1,
pia[addr] & 0x3F));
addr += 1 + (pia[addr] & 0x3F);
memcpy(fru_info->product_name, pia + addr + 1,
min_t(size_t, sizeof(fru_info->product_name), pia[addr] & 0x3F));
addr += 1 + (pia[addr] & 0x3F);
memcpy(fru_info->product_number, pia + addr + 1,
pia[addr] & 0x3F));
addr += 1 + (pia[addr] & 0x3F);
addr += 1 + (pia[addr] & 0x3F);
memcpy(fru_info->serial, pia + addr + 1,
min_t(size_t, sizeof(fru_info->serial), pia[addr] & 0x3F));
addr += 1 + (pia[addr] & 0x3F);
addr += 1 + (pia[addr] & 0x3F);
if ((addr + 1 >= len) || !(pia[addr] & 0x3F))
memcpy(fru_info->fru_id, pia + addr + 1,
min_t(size_t, sizeof(fru_info->fru_id), pia[addr] & 0x3F));
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;