Lines Matching +full:high +full:- +full:side
2 * MC33880 high-side/low-side switch GPIO driver
20 * Freescale MC33880 high-side/low-side switch
57 return spi_write(mc->spi, &mc->port_config, sizeof(mc->port_config)); in mc33880_write_config()
64 mc->port_config |= 1 << offset; in __mc33880_set()
66 mc->port_config &= ~(1 << offset); in __mc33880_set()
76 mutex_lock(&mc->lock); in mc33880_set()
80 mutex_unlock(&mc->lock); in mc33880_set()
89 pdata = dev_get_platdata(&spi->dev); in mc33880_probe()
90 if (!pdata || !pdata->base) { in mc33880_probe()
91 dev_dbg(&spi->dev, "incorrect or missing platform data\n"); in mc33880_probe()
92 return -EINVAL; in mc33880_probe()
98 spi->bits_per_word = 8; in mc33880_probe()
104 mc = devm_kzalloc(&spi->dev, sizeof(struct mc33880), GFP_KERNEL); in mc33880_probe()
106 return -ENOMEM; in mc33880_probe()
108 mutex_init(&mc->lock); in mc33880_probe()
112 mc->spi = spi; in mc33880_probe()
114 mc->chip.label = DRIVER_NAME, in mc33880_probe()
115 mc->chip.set = mc33880_set; in mc33880_probe()
116 mc->chip.base = pdata->base; in mc33880_probe()
117 mc->chip.ngpio = PIN_NUMBER; in mc33880_probe()
118 mc->chip.can_sleep = true; in mc33880_probe()
119 mc->chip.parent = &spi->dev; in mc33880_probe()
120 mc->chip.owner = THIS_MODULE; in mc33880_probe()
122 mc->port_config = 0x00; in mc33880_probe()
128 mc->port_config = 0x00; in mc33880_probe()
133 dev_err(&spi->dev, "Failed writing to " DRIVER_NAME ": %d\n", in mc33880_probe()
138 ret = gpiochip_add_data(&mc->chip, mc); in mc33880_probe()
145 mutex_destroy(&mc->lock); in mc33880_probe()
155 return -ENODEV; in mc33880_remove()
157 gpiochip_remove(&mc->chip); in mc33880_remove()
158 mutex_destroy(&mc->lock); in mc33880_remove()
186 MODULE_AUTHOR("Mocean Laboratories <info@mocean-labs.com>");