/* Hard resets the chip, disables HA interrupts, downloads the sequnecer microcode and starts the sequencers. The caller has to explicitly enable HA interrupts with asd_enable_ints(asd_ha).  */
static int asd_init_chip(struct asd_ha_struct *asd_ha)
/* Hard resets the chip, disables HA interrupts, downloads the sequnecer microcode and starts the sequencers. The caller has to explicitly enable HA interrupts with asd_enable_ints(asd_ha).  */
static int asd_init_chip(struct asd_ha_struct *asd_ha)
{
	int err;
	err = asd_chip_hardrst(asd_ha);
	if (err) {
		asd_printk("couldn't hard reset %s\n",
			    pci_name(asd_ha->pcidev));
		goto out;
	}
	asd_disable_ints(asd_ha);
	err = asd_init_seqs(asd_ha);
	if (err) {
		asd_printk("couldn't init seqs for %s\n",
			   pci_name(asd_ha->pcidev));
		goto out;
	}
	err = asd_start_seqs(asd_ha);
	if (err) {
		asd_printk("coudln't start seqs for %s\n",
			   pci_name(asd_ha->pcidev));
		goto out;
	}
out:
	return err;
}