scr_write(ap, SCR_CONTROL, 0x301); /* issue phy wake/reset */ scr_read(ap, SCR_STATUS);	/* dummy read; flush */ 
/* issue phy wake/reset */ scr_write_flush(ap, SCR_CONTROL, 0x301); 
void __sata_phy_reset(struct ata_port *ap){	u32 sstatus;	unsigned long timeout = jiffies + (HZ * 5);	if (ap->flags & ATA_FLAG_SATA_RESET) {		scr_write(ap, SCR_CONTROL, 0x301); /* issue phy wake/reset */		scr_read(ap, SCR_STATUS);	/* dummy read; flush */		udelay(400);			/* FIXME: a guess */	}	scr_write(ap, SCR_CONTROL, 0x300);	/* issue phy wake/clear reset */	/* wait for phy to become ready, if necessary */	do {		msleep(200);		sstatus = scr_read(ap, SCR_STATUS);		if ((sstatus & 0xf) != 1)			break;	} while (time_before(jiffies, timeout));	/* TODO: phy layer with polling, timeouts, etc. */	if (sata_dev_present(ap))		ata_port_probe(ap);	else {		sstatus = scr_read(ap, SCR_STATUS);		printk(KERN_INFO "ata%u: no device found (phy stat %08x)\n",		       ap->id, sstatus);		ata_port_disable(ap);	}	if (ap->flags & ATA_FLAG_PORT_DISABLED)		return;	if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {		ata_port_disable(ap);		return;	}	ap->cbl = ATA_CBL_SATA;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/cdcca89e1a90fa9112260bd6384f20fcc4280e21/libata-core.c/buggy/drivers/scsi/libata-core.c