--- driver/modules/hostap_plx.c +++ driver/modules/hostap_plx.c @@ -272,12 +272,41 @@ static void prism2_plx_cor_sreset(local_ } +static void prism2_plx_genesis_reset(local_info_t *local, int idle, int hcr) +{ + unsigned char corsave; + + if (local->attr_mem == 0) { + /* TMD7160 - COR at card's first I/O addr */ + corsave = inb(local->cor_offset); + outb(corsave | COR_SRESET, local->cor_offset); + mdelay(10); + outb(hcr, local->cor_offset + 2); + mdelay(10); + outb(corsave & ~COR_SRESET, local->cor_offset); + mdelay(10); + } else { + /* PLX9052 */ + corsave = readb(local->attr_mem + local->cor_offset); + writeb(corsave | COR_SRESET, + local->attr_mem + local->cor_offset); + mdelay(10); + writeb(hcr, local->attr_mem + local->cor_offset + 2); + mdelay(10); + writeb(corsave & ~COR_SRESET, + local->attr_mem + local->cor_offset); + mdelay(10); + } +} + + static struct prism2_helper_functions prism2_plx_funcs = { .card_present = NULL, .cor_sreset = prism2_plx_cor_sreset, .dev_open = NULL, - .dev_close = NULL + .dev_close = NULL, + .genesis_reset = prism2_plx_genesis_reset, };