Lines Matching refs:arb
64 const struct i2c_arbitrator_data *arb = data; in i2c_arbitrator_select() local
68 stop_time = jiffies + usecs_to_jiffies(arb->wait_free_us) + 1; in i2c_arbitrator_select()
71 gpio_set_value(arb->our_gpio, !arb->our_gpio_release); in i2c_arbitrator_select()
72 udelay(arb->slew_delay_us); in i2c_arbitrator_select()
75 stop_retry = jiffies + usecs_to_jiffies(arb->wait_retry_us) + 1; in i2c_arbitrator_select()
77 int gpio_val = !!gpio_get_value(arb->their_gpio); in i2c_arbitrator_select()
79 if (gpio_val == arb->their_gpio_release) { in i2c_arbitrator_select()
88 gpio_set_value(arb->our_gpio, arb->our_gpio_release); in i2c_arbitrator_select()
90 usleep_range(arb->wait_retry_us, arb->wait_retry_us * 2); in i2c_arbitrator_select()
94 gpio_set_value(arb->our_gpio, arb->our_gpio_release); in i2c_arbitrator_select()
95 udelay(arb->slew_delay_us); in i2c_arbitrator_select()
108 const struct i2c_arbitrator_data *arb = data; in i2c_arbitrator_deselect() local
111 gpio_set_value(arb->our_gpio, arb->our_gpio_release); in i2c_arbitrator_deselect()
112 udelay(arb->slew_delay_us); in i2c_arbitrator_deselect()
122 struct i2c_arbitrator_data *arb; in i2c_arbitrator_probe() local
137 arb = devm_kzalloc(dev, sizeof(*arb), GFP_KERNEL); in i2c_arbitrator_probe()
138 if (!arb) { in i2c_arbitrator_probe()
142 platform_set_drvdata(pdev, arb); in i2c_arbitrator_probe()
151 arb->our_gpio = ret; in i2c_arbitrator_probe()
152 arb->our_gpio_release = !!(gpio_flags & OF_GPIO_ACTIVE_LOW); in i2c_arbitrator_probe()
155 ret = devm_gpio_request_one(dev, arb->our_gpio, out_init, in i2c_arbitrator_probe()
169 arb->their_gpio = ret; in i2c_arbitrator_probe()
170 arb->their_gpio_release = !!(gpio_flags & OF_GPIO_ACTIVE_LOW); in i2c_arbitrator_probe()
171 ret = devm_gpio_request_one(dev, arb->their_gpio, GPIOF_IN, in i2c_arbitrator_probe()
186 if (of_property_read_u32(np, "slew-delay-us", &arb->slew_delay_us)) in i2c_arbitrator_probe()
187 arb->slew_delay_us = 10; in i2c_arbitrator_probe()
188 if (of_property_read_u32(np, "wait-retry-us", &arb->wait_retry_us)) in i2c_arbitrator_probe()
189 arb->wait_retry_us = 3000; in i2c_arbitrator_probe()
190 if (of_property_read_u32(np, "wait-free-us", &arb->wait_free_us)) in i2c_arbitrator_probe()
191 arb->wait_free_us = 50000; in i2c_arbitrator_probe()
199 arb->parent = of_find_i2c_adapter_by_node(parent_np); in i2c_arbitrator_probe()
200 if (!arb->parent) { in i2c_arbitrator_probe()
206 arb->child = i2c_add_mux_adapter(arb->parent, dev, arb, 0, 0, 0, in i2c_arbitrator_probe()
209 if (!arb->child) { in i2c_arbitrator_probe()
212 i2c_put_adapter(arb->parent); in i2c_arbitrator_probe()
220 struct i2c_arbitrator_data *arb = platform_get_drvdata(pdev); in i2c_arbitrator_remove() local
222 i2c_del_mux_adapter(arb->child); in i2c_arbitrator_remove()
223 i2c_put_adapter(arb->parent); in i2c_arbitrator_remove()