Lines Matching refs:mux

41 	struct i2c_mux_pinctrl *mux = data;  in i2c_mux_pinctrl_select()  local
43 return pinctrl_select_state(mux->pinctrl, mux->states[chan]); in i2c_mux_pinctrl_select()
49 struct i2c_mux_pinctrl *mux = data; in i2c_mux_pinctrl_deselect() local
51 return pinctrl_select_state(mux->pinctrl, mux->state_idle); in i2c_mux_pinctrl_deselect()
55 static int i2c_mux_pinctrl_parse_dt(struct i2c_mux_pinctrl *mux, in i2c_mux_pinctrl_parse_dt() argument
66 mux->pdata = devm_kzalloc(&pdev->dev, sizeof(*mux->pdata), GFP_KERNEL); in i2c_mux_pinctrl_parse_dt()
67 if (!mux->pdata) { in i2c_mux_pinctrl_parse_dt()
68 dev_err(mux->dev, in i2c_mux_pinctrl_parse_dt()
75 dev_err(mux->dev, "Cannot parse pinctrl-names: %d\n", in i2c_mux_pinctrl_parse_dt()
80 mux->pdata->pinctrl_states = devm_kzalloc(&pdev->dev, in i2c_mux_pinctrl_parse_dt()
81 sizeof(*mux->pdata->pinctrl_states) * num_names, in i2c_mux_pinctrl_parse_dt()
83 if (!mux->pdata->pinctrl_states) { in i2c_mux_pinctrl_parse_dt()
84 dev_err(mux->dev, "Cannot allocate pinctrl_states\n"); in i2c_mux_pinctrl_parse_dt()
90 &mux->pdata->pinctrl_states[mux->pdata->bus_count]); in i2c_mux_pinctrl_parse_dt()
92 dev_err(mux->dev, "Cannot parse pinctrl-names: %d\n", in i2c_mux_pinctrl_parse_dt()
96 if (!strcmp(mux->pdata->pinctrl_states[mux->pdata->bus_count], in i2c_mux_pinctrl_parse_dt()
99 dev_err(mux->dev, "idle state must be last\n"); in i2c_mux_pinctrl_parse_dt()
102 mux->pdata->pinctrl_state_idle = "idle"; in i2c_mux_pinctrl_parse_dt()
104 mux->pdata->bus_count++; in i2c_mux_pinctrl_parse_dt()
110 dev_err(mux->dev, "Cannot parse i2c-parent\n"); in i2c_mux_pinctrl_parse_dt()
115 dev_err(mux->dev, "Cannot find parent bus\n"); in i2c_mux_pinctrl_parse_dt()
118 mux->pdata->parent_bus_num = i2c_adapter_id(adapter); in i2c_mux_pinctrl_parse_dt()
124 static inline int i2c_mux_pinctrl_parse_dt(struct i2c_mux_pinctrl *mux, in i2c_mux_pinctrl_parse_dt() argument
133 struct i2c_mux_pinctrl *mux; in i2c_mux_pinctrl_probe() local
137 mux = devm_kzalloc(&pdev->dev, sizeof(*mux), GFP_KERNEL); in i2c_mux_pinctrl_probe()
138 if (!mux) { in i2c_mux_pinctrl_probe()
143 platform_set_drvdata(pdev, mux); in i2c_mux_pinctrl_probe()
145 mux->dev = &pdev->dev; in i2c_mux_pinctrl_probe()
147 mux->pdata = dev_get_platdata(&pdev->dev); in i2c_mux_pinctrl_probe()
148 if (!mux->pdata) { in i2c_mux_pinctrl_probe()
149 ret = i2c_mux_pinctrl_parse_dt(mux, pdev); in i2c_mux_pinctrl_probe()
153 if (!mux->pdata) { in i2c_mux_pinctrl_probe()
159 mux->states = devm_kzalloc(&pdev->dev, in i2c_mux_pinctrl_probe()
160 sizeof(*mux->states) * mux->pdata->bus_count, in i2c_mux_pinctrl_probe()
162 if (!mux->states) { in i2c_mux_pinctrl_probe()
168 mux->busses = devm_kzalloc(&pdev->dev, in i2c_mux_pinctrl_probe()
169 sizeof(*mux->busses) * mux->pdata->bus_count, in i2c_mux_pinctrl_probe()
171 if (!mux->busses) { in i2c_mux_pinctrl_probe()
177 mux->pinctrl = devm_pinctrl_get(&pdev->dev); in i2c_mux_pinctrl_probe()
178 if (IS_ERR(mux->pinctrl)) { in i2c_mux_pinctrl_probe()
179 ret = PTR_ERR(mux->pinctrl); in i2c_mux_pinctrl_probe()
183 for (i = 0; i < mux->pdata->bus_count; i++) { in i2c_mux_pinctrl_probe()
184 mux->states[i] = pinctrl_lookup_state(mux->pinctrl, in i2c_mux_pinctrl_probe()
185 mux->pdata->pinctrl_states[i]); in i2c_mux_pinctrl_probe()
186 if (IS_ERR(mux->states[i])) { in i2c_mux_pinctrl_probe()
187 ret = PTR_ERR(mux->states[i]); in i2c_mux_pinctrl_probe()
190 mux->pdata->pinctrl_states[i], ret); in i2c_mux_pinctrl_probe()
194 if (mux->pdata->pinctrl_state_idle) { in i2c_mux_pinctrl_probe()
195 mux->state_idle = pinctrl_lookup_state(mux->pinctrl, in i2c_mux_pinctrl_probe()
196 mux->pdata->pinctrl_state_idle); in i2c_mux_pinctrl_probe()
197 if (IS_ERR(mux->state_idle)) { in i2c_mux_pinctrl_probe()
198 ret = PTR_ERR(mux->state_idle); in i2c_mux_pinctrl_probe()
201 mux->pdata->pinctrl_state_idle, ret); in i2c_mux_pinctrl_probe()
210 mux->parent = i2c_get_adapter(mux->pdata->parent_bus_num); in i2c_mux_pinctrl_probe()
211 if (!mux->parent) { in i2c_mux_pinctrl_probe()
213 mux->pdata->parent_bus_num); in i2c_mux_pinctrl_probe()
218 for (i = 0; i < mux->pdata->bus_count; i++) { in i2c_mux_pinctrl_probe()
219 u32 bus = mux->pdata->base_bus_num ? in i2c_mux_pinctrl_probe()
220 (mux->pdata->base_bus_num + i) : 0; in i2c_mux_pinctrl_probe()
222 mux->busses[i] = i2c_add_mux_adapter(mux->parent, &pdev->dev, in i2c_mux_pinctrl_probe()
223 mux, bus, i, 0, in i2c_mux_pinctrl_probe()
226 if (!mux->busses[i]) { in i2c_mux_pinctrl_probe()
237 i2c_del_mux_adapter(mux->busses[i - 1]); in i2c_mux_pinctrl_probe()
238 i2c_put_adapter(mux->parent); in i2c_mux_pinctrl_probe()
245 struct i2c_mux_pinctrl *mux = platform_get_drvdata(pdev); in i2c_mux_pinctrl_remove() local
248 for (i = 0; i < mux->pdata->bus_count; i++) in i2c_mux_pinctrl_remove()
249 i2c_del_mux_adapter(mux->busses[i]); in i2c_mux_pinctrl_remove()
251 i2c_put_adapter(mux->parent); in i2c_mux_pinctrl_remove()