Lines Matching refs:base

131 	unsigned long base;
142 static int winbond_sio_enter(unsigned long base)
144 if (!request_muxed_region(base, 2, WB_GPIO_DRIVER_NAME))
151 outb(WB_SIO_EXT_ENTER_KEY, base);
152 outb(WB_SIO_EXT_ENTER_KEY, base);
157 static void winbond_sio_select_logical(unsigned long base, u8 dev)
159 outb(WB_SIO_REG_LOGICAL, base);
160 outb(dev, base + 1);
163 static void winbond_sio_leave(unsigned long base)
165 outb(WB_SIO_EXT_EXIT_KEY, base);
167 release_region(base, 2);
170 static void winbond_sio_reg_write(unsigned long base, u8 reg, u8 data)
172 outb(reg, base);
173 outb(data, base + 1);
176 static u8 winbond_sio_reg_read(unsigned long base, u8 reg)
178 outb(reg, base);
179 return inb(base + 1);
182 static void winbond_sio_reg_bset(unsigned long base, u8 reg, u8 bit)
186 val = winbond_sio_reg_read(base, reg);
188 winbond_sio_reg_write(base, reg, val);
191 static void winbond_sio_reg_bclear(unsigned long base, u8 reg, u8 bit)
195 val = winbond_sio_reg_read(base, reg);
197 winbond_sio_reg_write(base, reg, val);
200 static bool winbond_sio_reg_btest(unsigned long base, u8 reg, u8 bit)
202 return winbond_sio_reg_read(base, reg) & BIT(bit);
385 unsigned long *base = gpiochip_get_data(gc);
392 ret = winbond_sio_enter(*base);
396 winbond_sio_select_logical(*base, info->dev);
398 val = winbond_sio_reg_btest(*base, info->datareg, offset);
399 if (winbond_sio_reg_btest(*base, info->invreg, offset))
402 winbond_sio_leave(*base);
409 unsigned long *base = gpiochip_get_data(gc);
416 ret = winbond_sio_enter(*base);
420 winbond_sio_select_logical(*base, info->dev);
422 winbond_sio_reg_bset(*base, info->ioreg, offset);
424 winbond_sio_leave(*base);
433 unsigned long *base = gpiochip_get_data(gc);
440 ret = winbond_sio_enter(*base);
444 winbond_sio_select_logical(*base, info->dev);
446 winbond_sio_reg_bclear(*base, info->ioreg, offset);
448 if (winbond_sio_reg_btest(*base, info->invreg, offset))
452 winbond_sio_reg_bset(*base, info->datareg, offset);
454 winbond_sio_reg_bclear(*base, info->datareg, offset);
456 winbond_sio_leave(*base);
464 unsigned long *base = gpiochip_get_data(gc);
470 if (winbond_sio_enter(*base) != 0)
473 winbond_sio_select_logical(*base, info->dev);
475 if (winbond_sio_reg_btest(*base, info->invreg, offset))
479 winbond_sio_reg_bset(*base, info->datareg, offset);
481 winbond_sio_reg_bclear(*base, info->datareg, offset);
483 winbond_sio_leave(*base);
487 .base = -1,
497 static void winbond_gpio_configure_port0_pins(unsigned long base)
501 val = winbond_sio_reg_read(base, WB_SIO_REG_GPIO1_MF);
511 winbond_sio_reg_write(base, WB_SIO_REG_GPIO1_MF, val);
514 static void winbond_gpio_configure_port1_check_i2c(unsigned long base)
516 params.i2cgpio = !winbond_sio_reg_btest(base, WB_SIO_REG_I2C_PS,
522 static bool winbond_gpio_configure_port(unsigned long base, unsigned int idx)
530 winbond_sio_select_logical(base, conflict->dev);
532 if (winbond_sio_reg_btest(base, conflict->testreg,
547 winbond_gpio_configure_port0_pins(base);
549 winbond_gpio_configure_port1_check_i2c(base);
551 winbond_sio_select_logical(base, info->dev);
553 winbond_sio_reg_bset(base, info->enablereg, info->enablebit);
556 winbond_sio_reg_bset(base, info->outputreg,
559 winbond_sio_reg_bclear(base, info->outputreg,
563 winbond_sio_reg_btest(base, info->outputreg,
571 static int winbond_gpio_configure(unsigned long base)
576 if (!winbond_gpio_configure_port(base, i))
587 static int winbond_gpio_check_chip(unsigned long base)
592 ret = winbond_sio_enter(base);
596 chip = winbond_sio_reg_read(base, WB_SIO_REG_CHIP_MSB) << 8;
597 chip |= winbond_sio_reg_read(base, WB_SIO_REG_CHIP_LSB);
599 pr_notice("chip ID at %lx is %.4x\n", base, chip);
607 winbond_sio_leave(base);
630 if (params.base != 0)
631 return winbond_gpio_check_chip(params.base) == 0;
634 * if the 'base' module parameter is unset probe two chip default
637 params.base = WB_SIO_BASE;
638 ret = winbond_gpio_check_chip(params.base);
644 params.base = WB_SIO_BASE_HIGH;
645 return winbond_gpio_check_chip(params.base) == 0;
652 if (params.base == 0)
655 ret = winbond_sio_enter(params.base);
659 ret = winbond_gpio_configure(params.base);
661 winbond_sio_leave(params.base);
682 return devm_gpiochip_add_data(dev, &winbond_gpio_chip, &params.base);
695 module_param_named(base, params.base, ulong, 0444);
696 MODULE_PARM_DESC(base,
697 "I/O port base (when unset - probe chip default ones)");