static void prism2_pccard_genesis_reset(local_info_t *local, int hcr) { int res; u8 old_cor; struct hostap_cs_priv *hw_priv = local->hw_priv; if (!prism2_pccard_card_present(local)) return; if (hw_priv->sandisk_connectplus) { sandisk_write_hcr(local, hcr); return; } res = pcmcia_read_config_byte(hw_priv->link, CISREG_COR, &old_cor); if (res != 0) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 1 " "(%d)\n", res); return; } printk(KERN_DEBUG "prism2_pccard_genesis_sreset: original COR %02x\n", old_cor); res = pcmcia_write_config_byte(hw_priv->link, CISREG_COR, old_cor | COR_SOFT_RESET); if (res != 0) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 2 " "(%d)\n", res); return; } mdelay(10); /* Setup Genesis mode */ res = pcmcia_write_config_byte(hw_priv->link, CISREG_CCSR, hcr); if (res != 0) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 3 " "(%d)\n", res); return; } mdelay(10); res = pcmcia_write_config_byte(hw_priv->link, CISREG_COR, old_cor & ~COR_SOFT_RESET); if (res != 0) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 4 " "(%d)\n", res); return; } mdelay(10); }
static void prism2_pccard_cor_sreset(local_info_t *local) { int res; conf_reg_t reg; if (!prism2_pccard_card_present(local)) return; reg.Function = 0; reg.Action = CS_READ; reg.Offset = CISREG_COR; reg.Value = 0; res = CardServices(AccessConfigurationRegister, local->link->handle, ®); if (res != CS_SUCCESS) { printk(KERN_DEBUG "prism2_pccard_cor_sreset failed 1 (%d)\n", res); return; } printk(KERN_DEBUG "prism2_pccard_cor_sreset: original COR %02x\n", reg.Value); reg.Action = CS_WRITE; reg.Value |= COR_SOFT_RESET; res = CardServices(AccessConfigurationRegister, local->link->handle, ®); if (res != CS_SUCCESS) { printk(KERN_DEBUG "prism2_pccard_cor_sreset failed 2 (%d)\n", res); return; } mdelay(1); reg.Value &= ~COR_SOFT_RESET; res = CardServices(AccessConfigurationRegister, local->link->handle, ®); if (res != CS_SUCCESS) { printk(KERN_DEBUG "prism2_pccard_cor_sreset failed 3 (%d)\n", res); return; } mdelay(1); }
static void prism2_pccard_cor_sreset(local_info_t *local) { int res; u8 val; struct hostap_cs_priv *hw_priv = local->hw_priv; if (!prism2_pccard_card_present(local)) return; res = pcmcia_read_config_byte(hw_priv->link, CISREG_COR, &val); if (res != 0) { printk(KERN_DEBUG "prism2_pccard_cor_sreset failed 1 (%d)\n", res); return; } printk(KERN_DEBUG "prism2_pccard_cor_sreset: original COR %02x\n", val); val |= COR_SOFT_RESET; res = pcmcia_write_config_byte(hw_priv->link, CISREG_COR, val); if (res != 0) { printk(KERN_DEBUG "prism2_pccard_cor_sreset failed 2 (%d)\n", res); return; } mdelay(hw_priv->sandisk_connectplus ? 5 : 2); val &= ~COR_SOFT_RESET; if (hw_priv->sandisk_connectplus) val |= COR_IREQ_ENA; res = pcmcia_write_config_byte(hw_priv->link, CISREG_COR, val); if (res != 0) { printk(KERN_DEBUG "prism2_pccard_cor_sreset failed 3 (%d)\n", res); return; } mdelay(hw_priv->sandisk_connectplus ? 5 : 2); if (hw_priv->sandisk_connectplus) sandisk_set_iobase(local); }
static void prism2_pccard_genesis_reset(local_info_t *local, int hcr) { int res; conf_reg_t reg; int old_cor; if (!prism2_pccard_card_present(local)) return; reg.Function = 0; reg.Action = CS_READ; reg.Offset = CISREG_COR; reg.Value = 0; res = CardServices(AccessConfigurationRegister, local->link->handle, ®); if (res != CS_SUCCESS) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 1 " "(%d)\n", res); return; } printk(KERN_DEBUG "prism2_pccard_genesis_sreset: original COR %02x\n", reg.Value); old_cor = reg.Value; reg.Action = CS_WRITE; reg.Value |= COR_SOFT_RESET; res = CardServices(AccessConfigurationRegister, local->link->handle, ®); if (res != CS_SUCCESS) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 2 " "(%d)\n", res); return; } mdelay(10); /* Setup Genesis mode */ reg.Action = CS_WRITE; reg.Value = hcr; reg.Offset = CISREG_CCSR; res = CardServices(AccessConfigurationRegister, local->link->handle, ®); if (res != CS_SUCCESS) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 3 " "(%d)\n", res); return; } mdelay(10); reg.Action = CS_WRITE; reg.Offset = CISREG_COR; reg.Value = old_cor & ~COR_SOFT_RESET; res = CardServices(AccessConfigurationRegister, local->link->handle, ®); if (res != CS_SUCCESS) { printk(KERN_DEBUG "prism2_pccard_genesis_sreset failed 4 " "(%d)\n", res); return; } mdelay(10); }