.. | .. |
---|
62 | 62 | .name = "serdes-bridge", |
---|
63 | 63 | .of_compatible = "maxim,max96789-bridge", |
---|
64 | 64 | }, |
---|
| 65 | + { |
---|
| 66 | + .name = "serdes-bridge-split", |
---|
| 67 | + .of_compatible = "maxim,max96789-bridge-split", |
---|
| 68 | + }, |
---|
65 | 69 | }; |
---|
66 | 70 | |
---|
67 | 71 | static const struct mfd_cell serdes_max96752_devs[] = { |
---|
.. | .. |
---|
72 | 76 | { |
---|
73 | 77 | .name = "serdes-panel", |
---|
74 | 78 | .of_compatible = "maxim,max96752-panel", |
---|
| 79 | + }, |
---|
| 80 | + { |
---|
| 81 | + .name = "serdes-panel-split", |
---|
| 82 | + .of_compatible = "maxim,max96752-panel-split", |
---|
75 | 83 | }, |
---|
76 | 84 | }; |
---|
77 | 85 | |
---|
.. | .. |
---|
127 | 135 | int ret; |
---|
128 | 136 | |
---|
129 | 137 | ret = regmap_read(serdes->regmap, reg, val); |
---|
130 | | - SERDES_DBG_I2C("%s %s Read Reg%04x %04x\n", __func__, |
---|
131 | | - serdes->chip_data->name, reg, *val); |
---|
| 138 | + SERDES_DBG_I2C("%s %s %s Read Reg%04x %04x ret=%d\n", __func__, dev_name(serdes->dev), |
---|
| 139 | + serdes->chip_data->name, reg, *val, ret); |
---|
132 | 140 | return ret; |
---|
133 | 141 | } |
---|
134 | 142 | EXPORT_SYMBOL_GPL(serdes_reg_read); |
---|
.. | .. |
---|
148 | 156 | |
---|
149 | 157 | ret = regmap_bulk_read(serdes->regmap, reg, buf, count); |
---|
150 | 158 | for (i = 0; i < count; i++) { |
---|
151 | | - SERDES_DBG_I2C("%s %s %s Read Reg%04x %04x\n", __func__, dev_name(serdes->dev), |
---|
152 | | - serdes->chip_data->name, reg + i, buf[i]); |
---|
| 159 | + SERDES_DBG_I2C("%s %s %s Read Reg%04x %04x ret=%d\n", |
---|
| 160 | + __func__, dev_name(serdes->dev), |
---|
| 161 | + serdes->chip_data->name, reg + i, buf[i], ret); |
---|
153 | 162 | } |
---|
154 | 163 | |
---|
155 | 164 | return ret; |
---|
.. | .. |
---|
166 | 175 | |
---|
167 | 176 | mutex_lock(&serdes->io_lock); |
---|
168 | 177 | for (i = 0; i < count; i++) { |
---|
169 | | - SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x\n", __func__, dev_name(serdes->dev), |
---|
170 | | - serdes->chip_data->name, reg, buf[i]); |
---|
171 | 178 | ret = regmap_write(serdes->regmap, reg, buf[i]); |
---|
| 179 | + SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x ret=%d\n", |
---|
| 180 | + __func__, dev_name(serdes->dev), |
---|
| 181 | + serdes->chip_data->name, reg, buf[i], ret); |
---|
172 | 182 | if (ret != 0) { |
---|
173 | 183 | mutex_unlock(&serdes->io_lock); |
---|
174 | 184 | return ret; |
---|
.. | .. |
---|
193 | 203 | |
---|
194 | 204 | SERDES_DBG_I2C("%s %s %s num=%d\n", __func__, dev_name(serdes->dev), |
---|
195 | 205 | serdes->chip_data->name, num_regs); |
---|
196 | | - for (i = 0; i < num_regs; i++) { |
---|
197 | | - SERDES_DBG_I2C("serdes %s Write Reg%04x %04x\n", |
---|
198 | | - serdes->chip_data->name, regs[i].reg, regs[i].def); |
---|
199 | | - } |
---|
200 | | - |
---|
201 | 206 | ret = regmap_multi_reg_write(serdes->regmap, regs, num_regs); |
---|
| 207 | + for (i = 0; i < num_regs; i++) { |
---|
| 208 | + SERDES_DBG_I2C("serdes %s Write Reg%04x %04x ret=%d\n", |
---|
| 209 | + serdes->chip_data->name, regs[i].reg, regs[i].def, ret); |
---|
| 210 | + } |
---|
202 | 211 | |
---|
203 | 212 | return ret; |
---|
204 | 213 | } |
---|
.. | .. |
---|
216 | 225 | { |
---|
217 | 226 | int ret; |
---|
218 | 227 | |
---|
219 | | - SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x)\n", __func__, dev_name(serdes->dev), |
---|
220 | | - serdes->chip_data->name, reg, val); |
---|
221 | 228 | ret = regmap_write(serdes->regmap, reg, val); |
---|
| 229 | + SERDES_DBG_I2C("%s %s %s Write Reg%04x %04x ret=%d\n", __func__, dev_name(serdes->dev), |
---|
| 230 | + serdes->chip_data->name, reg, val, ret); |
---|
222 | 231 | if (ret != 0) |
---|
223 | 232 | return ret; |
---|
224 | 233 | |
---|
.. | .. |
---|
322 | 331 | ret = pinctrl_select_state(serdes->pinctrl_node, serdes->pins_default); |
---|
323 | 332 | if (ret) |
---|
324 | 333 | dev_err(serdes->dev, "could not set default pins\n"); |
---|
325 | | - SERDES_DBG_MFD("%s: name=%s\n", __func__, dev_name(serdes->dev)); |
---|
| 334 | + SERDES_DBG_MFD("%s: name=%s default\n", __func__, dev_name(serdes->dev)); |
---|
| 335 | + } |
---|
| 336 | + |
---|
| 337 | + if ((!IS_ERR(serdes->pinctrl_node)) && (!IS_ERR(serdes->pins_init))) { |
---|
| 338 | + ret = pinctrl_select_state(serdes->pinctrl_node, serdes->pins_init); |
---|
| 339 | + if (ret) |
---|
| 340 | + dev_err(serdes->dev, "could not set init pins\n"); |
---|
| 341 | + SERDES_DBG_MFD("%s: name=%s init\n", __func__, dev_name(serdes->dev)); |
---|
326 | 342 | } |
---|
327 | 343 | |
---|
328 | 344 | return ret; |
---|
.. | .. |
---|
376 | 392 | } |
---|
377 | 393 | EXPORT_SYMBOL_GPL(serdes_device_resume); |
---|
378 | 394 | |
---|
379 | | -void serdes_device_shutdown(struct serdes *serdes) |
---|
| 395 | +void serdes_device_poweroff(struct serdes *serdes) |
---|
380 | 396 | { |
---|
381 | 397 | int ret = 0; |
---|
382 | 398 | |
---|
.. | .. |
---|
385 | 401 | if (ret) |
---|
386 | 402 | dev_err(serdes->dev, "could not set sleep pins\n"); |
---|
387 | 403 | } |
---|
| 404 | + |
---|
| 405 | + if (!IS_ERR(serdes->vpower)) { |
---|
| 406 | + ret = regulator_disable(serdes->vpower); |
---|
| 407 | + if (ret) |
---|
| 408 | + dev_err(serdes->dev, "fail to disable vpower regulator\n"); |
---|
| 409 | + } |
---|
| 410 | + |
---|
| 411 | +} |
---|
| 412 | +EXPORT_SYMBOL_GPL(serdes_device_poweroff); |
---|
| 413 | + |
---|
| 414 | +int serdes_device_shutdown(struct serdes *serdes) |
---|
| 415 | +{ |
---|
| 416 | + int ret = 0; |
---|
| 417 | + |
---|
| 418 | + if (!IS_ERR(serdes->vpower)) { |
---|
| 419 | + ret = regulator_disable(serdes->vpower); |
---|
| 420 | + if (ret) { |
---|
| 421 | + dev_err(serdes->dev, "fail to disable vpower regulator\n"); |
---|
| 422 | + return ret; |
---|
| 423 | + } |
---|
| 424 | + } |
---|
| 425 | + |
---|
| 426 | + return ret; |
---|
388 | 427 | } |
---|
389 | 428 | EXPORT_SYMBOL_GPL(serdes_device_shutdown); |
---|
390 | 429 | |
---|