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()
116 dev_err(mux->dev, "Cannot find parent bus\n"); in i2c_mux_pinctrl_parse_dt()
119 mux->pdata->parent_bus_num = i2c_adapter_id(adapter); in i2c_mux_pinctrl_parse_dt()
125 static inline int i2c_mux_pinctrl_parse_dt(struct i2c_mux_pinctrl *mux, in i2c_mux_pinctrl_parse_dt() argument
134 struct i2c_mux_pinctrl *mux; in i2c_mux_pinctrl_probe() local
138 mux = devm_kzalloc(&pdev->dev, sizeof(*mux), GFP_KERNEL); in i2c_mux_pinctrl_probe()
139 if (!mux) { in i2c_mux_pinctrl_probe()
144 platform_set_drvdata(pdev, mux); in i2c_mux_pinctrl_probe()
146 mux->dev = &pdev->dev; in i2c_mux_pinctrl_probe()
148 mux->pdata = dev_get_platdata(&pdev->dev); in i2c_mux_pinctrl_probe()
149 if (!mux->pdata) { in i2c_mux_pinctrl_probe()
150 ret = i2c_mux_pinctrl_parse_dt(mux, pdev); in i2c_mux_pinctrl_probe()
154 if (!mux->pdata) { in i2c_mux_pinctrl_probe()
160 mux->states = devm_kzalloc(&pdev->dev, in i2c_mux_pinctrl_probe()
161 sizeof(*mux->states) * mux->pdata->bus_count, in i2c_mux_pinctrl_probe()
163 if (!mux->states) { in i2c_mux_pinctrl_probe()
169 mux->busses = devm_kzalloc(&pdev->dev, in i2c_mux_pinctrl_probe()
170 sizeof(*mux->busses) * mux->pdata->bus_count, in i2c_mux_pinctrl_probe()
172 if (!mux->busses) { in i2c_mux_pinctrl_probe()
178 mux->pinctrl = devm_pinctrl_get(&pdev->dev); in i2c_mux_pinctrl_probe()
179 if (IS_ERR(mux->pinctrl)) { in i2c_mux_pinctrl_probe()
180 ret = PTR_ERR(mux->pinctrl); in i2c_mux_pinctrl_probe()
184 for (i = 0; i < mux->pdata->bus_count; i++) { in i2c_mux_pinctrl_probe()
185 mux->states[i] = pinctrl_lookup_state(mux->pinctrl, in i2c_mux_pinctrl_probe()
186 mux->pdata->pinctrl_states[i]); in i2c_mux_pinctrl_probe()
187 if (IS_ERR(mux->states[i])) { in i2c_mux_pinctrl_probe()
188 ret = PTR_ERR(mux->states[i]); in i2c_mux_pinctrl_probe()
191 mux->pdata->pinctrl_states[i], ret); in i2c_mux_pinctrl_probe()
195 if (mux->pdata->pinctrl_state_idle) { in i2c_mux_pinctrl_probe()
196 mux->state_idle = pinctrl_lookup_state(mux->pinctrl, in i2c_mux_pinctrl_probe()
197 mux->pdata->pinctrl_state_idle); in i2c_mux_pinctrl_probe()
198 if (IS_ERR(mux->state_idle)) { in i2c_mux_pinctrl_probe()
199 ret = PTR_ERR(mux->state_idle); in i2c_mux_pinctrl_probe()
202 mux->pdata->pinctrl_state_idle, ret); in i2c_mux_pinctrl_probe()
211 mux->parent = i2c_get_adapter(mux->pdata->parent_bus_num); in i2c_mux_pinctrl_probe()
212 if (!mux->parent) { in i2c_mux_pinctrl_probe()
214 mux->pdata->parent_bus_num); in i2c_mux_pinctrl_probe()
219 for (i = 0; i < mux->pdata->bus_count; i++) { in i2c_mux_pinctrl_probe()
220 u32 bus = mux->pdata->base_bus_num ? in i2c_mux_pinctrl_probe()
221 (mux->pdata->base_bus_num + i) : 0; in i2c_mux_pinctrl_probe()
223 mux->busses[i] = i2c_add_mux_adapter(mux->parent, &pdev->dev, in i2c_mux_pinctrl_probe()
224 mux, bus, i, 0, in i2c_mux_pinctrl_probe()
227 if (!mux->busses[i]) { in i2c_mux_pinctrl_probe()
238 i2c_del_mux_adapter(mux->busses[i - 1]); in i2c_mux_pinctrl_probe()
239 i2c_put_adapter(mux->parent); in i2c_mux_pinctrl_probe()
246 struct i2c_mux_pinctrl *mux = platform_get_drvdata(pdev); in i2c_mux_pinctrl_remove() local
249 for (i = 0; i < mux->pdata->bus_count; i++) in i2c_mux_pinctrl_remove()
250 i2c_del_mux_adapter(mux->busses[i]); in i2c_mux_pinctrl_remove()
252 i2c_put_adapter(mux->parent); in i2c_mux_pinctrl_remove()