| .. | .. |
|---|
| 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 | |
|---|