Lines Matching +full:data +full:- +full:gpios

9  * SPDX-License-Identifier:	GPL-2.0+
42 return (1U << (31 - (gpio))); in gpio_mask()
47 return in_be32(&base->gpdat) & mask; in mpc85xx_gpio_get_val()
52 return in_be32(&base->gpdir) & mask; in mpc85xx_gpio_get_dir()
55 static inline void mpc85xx_gpio_set_in(struct ccsr_gpio *base, u32 gpios) in mpc85xx_gpio_set_in() argument
57 clrbits_be32(&base->gpdat, gpios); in mpc85xx_gpio_set_in()
58 /* GPDIR register 0 -> input */ in mpc85xx_gpio_set_in()
59 clrbits_be32(&base->gpdir, gpios); in mpc85xx_gpio_set_in()
62 static inline void mpc85xx_gpio_set_low(struct ccsr_gpio *base, u32 gpios) in mpc85xx_gpio_set_low() argument
64 clrbits_be32(&base->gpdat, gpios); in mpc85xx_gpio_set_low()
65 /* GPDIR register 1 -> output */ in mpc85xx_gpio_set_low()
66 setbits_be32(&base->gpdir, gpios); in mpc85xx_gpio_set_low()
69 static inline void mpc85xx_gpio_set_high(struct ccsr_gpio *base, u32 gpios) in mpc85xx_gpio_set_high() argument
71 setbits_be32(&base->gpdat, gpios); in mpc85xx_gpio_set_high()
72 /* GPDIR register 1 -> output */ in mpc85xx_gpio_set_high()
73 setbits_be32(&base->gpdir, gpios); in mpc85xx_gpio_set_high()
78 return in_be32(&base->gpodr) & mask; in mpc85xx_gpio_open_drain_val()
82 gpios) in mpc85xx_gpio_open_drain_on() argument
84 /* GPODR register 1 -> open drain on */ in mpc85xx_gpio_open_drain_on()
85 setbits_be32(&base->gpodr, gpios); in mpc85xx_gpio_open_drain_on()
89 u32 gpios) in mpc85xx_gpio_open_drain_off() argument
91 /* GPODR register 0 -> open drain off (actively driven) */ in mpc85xx_gpio_open_drain_off()
92 clrbits_be32(&base->gpodr, gpios); in mpc85xx_gpio_open_drain_off()
97 struct mpc85xx_gpio_data *data = dev_get_priv(dev); in mpc85xx_gpio_direction_input() local
99 mpc85xx_gpio_set_in(data->base, gpio_mask(gpio)); in mpc85xx_gpio_direction_input()
106 struct mpc85xx_gpio_data *data = dev_get_priv(dev); in mpc85xx_gpio_set_value() local
109 data->dat_shadow |= gpio_mask(gpio); in mpc85xx_gpio_set_value()
110 mpc85xx_gpio_set_high(data->base, gpio_mask(gpio)); in mpc85xx_gpio_set_value()
112 data->dat_shadow &= ~gpio_mask(gpio); in mpc85xx_gpio_set_value()
113 mpc85xx_gpio_set_low(data->base, gpio_mask(gpio)); in mpc85xx_gpio_set_value()
126 struct mpc85xx_gpio_data *data = dev_get_priv(dev); in mpc85xx_gpio_get_value() local
128 if (!!mpc85xx_gpio_get_dir(data->base, gpio_mask(gpio))) { in mpc85xx_gpio_get_value()
129 /* Output -> use shadowed value */ in mpc85xx_gpio_get_value()
130 return !!(data->dat_shadow & gpio_mask(gpio)); in mpc85xx_gpio_get_value()
132 /* Input -> read value from GPDAT register */ in mpc85xx_gpio_get_value()
133 return !!mpc85xx_gpio_get_val(data->base, gpio_mask(gpio)); in mpc85xx_gpio_get_value()
139 struct mpc85xx_gpio_data *data = dev_get_priv(dev); in mpc85xx_gpio_get_open_drain() local
141 return !!mpc85xx_gpio_open_drain_val(data->base, gpio_mask(gpio)); in mpc85xx_gpio_get_open_drain()
147 struct mpc85xx_gpio_data *data = dev_get_priv(dev); in mpc85xx_gpio_set_open_drain() local
150 mpc85xx_gpio_open_drain_on(data->base, gpio_mask(gpio)); in mpc85xx_gpio_set_open_drain()
152 mpc85xx_gpio_open_drain_off(data->base, gpio_mask(gpio)); in mpc85xx_gpio_set_open_drain()
159 struct mpc85xx_gpio_data *data = dev_get_priv(dev); in mpc85xx_gpio_get_function() local
162 dir = !!mpc85xx_gpio_get_dir(data->base, gpio_mask(gpio)); in mpc85xx_gpio_get_function()
172 addr = fdtdec_get_addr_size_auto_noparent(gd->fdt_blob, in mpc85xx_gpio_ofdata_to_platdata()
175 plat->addr = addr; in mpc85xx_gpio_ofdata_to_platdata()
176 plat->size = size; in mpc85xx_gpio_ofdata_to_platdata()
177 plat->ngpios = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), in mpc85xx_gpio_ofdata_to_platdata()
188 unsigned long size = plat->size; in mpc85xx_gpio_platdata_to_priv()
193 priv->addr = plat->addr; in mpc85xx_gpio_platdata_to_priv()
194 priv->base = map_sysmem(CONFIG_SYS_IMMR + plat->addr, size); in mpc85xx_gpio_platdata_to_priv()
196 if (!priv->base) in mpc85xx_gpio_platdata_to_priv()
197 return -ENOMEM; in mpc85xx_gpio_platdata_to_priv()
199 priv->gpio_count = plat->ngpios; in mpc85xx_gpio_platdata_to_priv()
200 priv->dat_shadow = 0; in mpc85xx_gpio_platdata_to_priv()
208 struct mpc85xx_gpio_data *data = dev_get_priv(dev); in mpc85xx_gpio_probe() local
213 snprintf(name, sizeof(name), "MPC@%lx_", data->addr); in mpc85xx_gpio_probe()
217 return -ENOMEM; in mpc85xx_gpio_probe()
219 uc_priv->bank_name = str; in mpc85xx_gpio_probe()
220 uc_priv->gpio_count = data->gpio_count; in mpc85xx_gpio_probe()
236 { .compatible = "fsl,pq3-gpio" },