Lines Matching refs:pmic_typec_pdphy

88 	struct pmic_typec_pdphy		*pmic_typec_pdphy;
91 struct pmic_typec_pdphy {
106 static void qcom_pmic_typec_pdphy_reset_on(struct pmic_typec_pdphy *pmic_typec_pdphy)
108 struct device *dev = pmic_typec_pdphy->dev;
112 ret = regmap_write(pmic_typec_pdphy->regmap,
113 pmic_typec_pdphy->base + USB_PDPHY_TX_CONTROL_REG, 0);
117 ret = regmap_write(pmic_typec_pdphy->regmap,
118 pmic_typec_pdphy->base + USB_PDPHY_FRAME_FILTER_REG, 0);
127 static void qcom_pmic_typec_pdphy_reset_off(struct pmic_typec_pdphy *pmic_typec_pdphy)
129 struct device *dev = pmic_typec_pdphy->dev;
132 ret = regmap_write(pmic_typec_pdphy->regmap,
133 pmic_typec_pdphy->base + USB_PDPHY_FRAME_FILTER_REG,
141 struct pmic_typec_pdphy *pmic_typec_pdphy = container_of(work, struct pmic_typec_pdphy,
145 spin_lock_irqsave(&pmic_typec_pdphy->lock, flags);
147 qcom_pmic_typec_pdphy_reset_on(pmic_typec_pdphy);
148 qcom_pmic_typec_pdphy_reset_off(pmic_typec_pdphy);
150 spin_unlock_irqrestore(&pmic_typec_pdphy->lock, flags);
152 tcpm_pd_hard_reset(pmic_typec_pdphy->tcpm_port);
156 qcom_pmic_typec_pdphy_clear_tx_control_reg(struct pmic_typec_pdphy *pmic_typec_pdphy)
158 struct device *dev = pmic_typec_pdphy->dev;
163 ret = regmap_write(pmic_typec_pdphy->regmap,
164 pmic_typec_pdphy->base + USB_PDPHY_TX_CONTROL_REG, 0);
169 ret = regmap_read(pmic_typec_pdphy->regmap,
170 pmic_typec_pdphy->base + USB_PDPHY_TX_CONTROL_REG, &val);
180 qcom_pmic_typec_pdphy_pd_transmit_signal(struct pmic_typec_pdphy *pmic_typec_pdphy,
184 struct device *dev = pmic_typec_pdphy->dev;
189 spin_lock_irqsave(&pmic_typec_pdphy->lock, flags);
192 ret = qcom_pmic_typec_pdphy_clear_tx_control_reg(pmic_typec_pdphy);
205 ret = regmap_write(pmic_typec_pdphy->regmap,
206 pmic_typec_pdphy->base + USB_PDPHY_TX_CONTROL_REG, val);
209 spin_unlock_irqrestore(&pmic_typec_pdphy->lock, flags);
218 qcom_pmic_typec_pdphy_pd_transmit_payload(struct pmic_typec_pdphy *pmic_typec_pdphy,
223 struct device *dev = pmic_typec_pdphy->dev;
228 spin_lock_irqsave(&pmic_typec_pdphy->lock, flags);
230 ret = regmap_read(pmic_typec_pdphy->regmap,
231 pmic_typec_pdphy->base + USB_PDPHY_RX_ACKNOWLEDGE_REG,
243 ret = qcom_pmic_typec_pdphy_clear_tx_control_reg(pmic_typec_pdphy);
252 ret = regmap_bulk_write(pmic_typec_pdphy->regmap,
253 pmic_typec_pdphy->base + USB_PDPHY_TX_BUFFER_HDR_REG,
260 ret = regmap_bulk_write(pmic_typec_pdphy->regmap,
261 pmic_typec_pdphy->base + USB_PDPHY_TX_BUFFER_DATA_REG,
268 ret = regmap_write(pmic_typec_pdphy->regmap,
269 pmic_typec_pdphy->base + USB_PDPHY_TX_SIZE_REG,
275 ret = qcom_pmic_typec_pdphy_clear_tx_control_reg(pmic_typec_pdphy);
286 ret = regmap_write(pmic_typec_pdphy->regmap,
287 pmic_typec_pdphy->base + USB_PDPHY_TX_CONTROL_REG, val);
290 spin_unlock_irqrestore(&pmic_typec_pdphy->lock, flags);
306 struct pmic_typec_pdphy *pmic_typec_pdphy = tcpm->pmic_typec_pdphy;
307 struct device *dev = pmic_typec_pdphy->dev;
311 ret = qcom_pmic_typec_pdphy_pd_transmit_payload(pmic_typec_pdphy,
315 ret = qcom_pmic_typec_pdphy_pd_transmit_signal(pmic_typec_pdphy,
326 static void qcom_pmic_typec_pdphy_pd_receive(struct pmic_typec_pdphy *pmic_typec_pdphy)
328 struct device *dev = pmic_typec_pdphy->dev;
334 spin_lock_irqsave(&pmic_typec_pdphy->lock, flags);
336 ret = regmap_read(pmic_typec_pdphy->regmap,
337 pmic_typec_pdphy->base + USB_PDPHY_RX_SIZE_REG, &size);
348 ret = regmap_read(pmic_typec_pdphy->regmap,
349 pmic_typec_pdphy->base + USB_PDPHY_RX_STATUS_REG,
355 ret = regmap_bulk_read(pmic_typec_pdphy->regmap,
356 pmic_typec_pdphy->base + USB_PDPHY_RX_BUFFER_REG,
362 ret = regmap_write(pmic_typec_pdphy->regmap,
363 pmic_typec_pdphy->base + USB_PDPHY_RX_ACKNOWLEDGE_REG, 0);
366 spin_unlock_irqrestore(&pmic_typec_pdphy->lock, flags);
370 tcpm_pd_receive(pmic_typec_pdphy->tcpm_port, &msg, TCPC_TX_SOP);
377 struct pmic_typec_pdphy *pmic_typec_pdphy = irq_data->pmic_typec_pdphy;
378 struct device *dev = pmic_typec_pdphy->dev;
385 schedule_work(&pmic_typec_pdphy->reset_work);
388 tcpm_pd_transmit_complete(pmic_typec_pdphy->tcpm_port,
392 qcom_pmic_typec_pdphy_pd_receive(pmic_typec_pdphy);
395 tcpm_pd_transmit_complete(pmic_typec_pdphy->tcpm_port,
399 tcpm_pd_transmit_complete(pmic_typec_pdphy->tcpm_port,
410 struct pmic_typec_pdphy *pmic_typec_pdphy = tcpm->pmic_typec_pdphy;
414 spin_lock_irqsave(&pmic_typec_pdphy->lock, flags);
416 ret = regmap_write(pmic_typec_pdphy->regmap,
417 pmic_typec_pdphy->base + USB_PDPHY_RX_ACKNOWLEDGE_REG, !on);
419 spin_unlock_irqrestore(&pmic_typec_pdphy->lock, flags);
421 dev_dbg(pmic_typec_pdphy->dev, "set_pd_rx: %s\n", on ? "on" : "off");
431 struct pmic_typec_pdphy *pmic_typec_pdphy = tcpm->pmic_typec_pdphy;
432 struct device *dev = pmic_typec_pdphy->dev;
436 spin_lock_irqsave(&pmic_typec_pdphy->lock, flags);
438 ret = regmap_update_bits(pmic_typec_pdphy->regmap,
439 pmic_typec_pdphy->base + USB_PDPHY_MSG_CONFIG_REG,
445 spin_unlock_irqrestore(&pmic_typec_pdphy->lock, flags);
453 static int qcom_pmic_typec_pdphy_enable(struct pmic_typec_pdphy *pmic_typec_pdphy)
455 struct device *dev = pmic_typec_pdphy->dev;
459 ret = regmap_update_bits(pmic_typec_pdphy->regmap,
460 pmic_typec_pdphy->base + USB_PDPHY_MSG_CONFIG_REG,
465 ret = regmap_write(pmic_typec_pdphy->regmap,
466 pmic_typec_pdphy->base + USB_PDPHY_EN_CONTROL_REG, 0);
470 ret = regmap_write(pmic_typec_pdphy->regmap,
471 pmic_typec_pdphy->base + USB_PDPHY_EN_CONTROL_REG,
476 qcom_pmic_typec_pdphy_reset_off(pmic_typec_pdphy);
484 static int qcom_pmic_typec_pdphy_disable(struct pmic_typec_pdphy *pmic_typec_pdphy)
488 qcom_pmic_typec_pdphy_reset_on(pmic_typec_pdphy);
490 ret = regmap_write(pmic_typec_pdphy->regmap,
491 pmic_typec_pdphy->base + USB_PDPHY_EN_CONTROL_REG, 0);
496 static int pmic_typec_pdphy_reset(struct pmic_typec_pdphy *pmic_typec_pdphy)
500 ret = qcom_pmic_typec_pdphy_disable(pmic_typec_pdphy);
505 ret = qcom_pmic_typec_pdphy_enable(pmic_typec_pdphy);
513 struct pmic_typec_pdphy *pmic_typec_pdphy = tcpm->pmic_typec_pdphy;
517 ret = regulator_enable(pmic_typec_pdphy->vdd_pdphy);
521 pmic_typec_pdphy->tcpm_port = tcpm_port;
523 ret = pmic_typec_pdphy_reset(pmic_typec_pdphy);
527 for (i = 0; i < pmic_typec_pdphy->nr_irqs; i++)
528 enable_irq(pmic_typec_pdphy->irq_data[i].irq);
533 regulator_disable(pmic_typec_pdphy->vdd_pdphy);
540 struct pmic_typec_pdphy *pmic_typec_pdphy = tcpm->pmic_typec_pdphy;
543 for (i = 0; i < pmic_typec_pdphy->nr_irqs; i++)
544 disable_irq(pmic_typec_pdphy->irq_data[i].irq);
546 qcom_pmic_typec_pdphy_reset_on(pmic_typec_pdphy);
548 regulator_disable(pmic_typec_pdphy->vdd_pdphy);
557 struct pmic_typec_pdphy *pmic_typec_pdphy;
562 pmic_typec_pdphy = devm_kzalloc(dev, sizeof(*pmic_typec_pdphy), GFP_KERNEL);
563 if (!pmic_typec_pdphy)
574 pmic_typec_pdphy->vdd_pdphy = devm_regulator_get(dev, "vdd-pdphy");
575 if (IS_ERR(pmic_typec_pdphy->vdd_pdphy))
576 return PTR_ERR(pmic_typec_pdphy->vdd_pdphy);
578 pmic_typec_pdphy->dev = dev;
579 pmic_typec_pdphy->base = base;
580 pmic_typec_pdphy->regmap = regmap;
581 pmic_typec_pdphy->nr_irqs = res->nr_irqs;
582 pmic_typec_pdphy->irq_data = irq_data;
583 spin_lock_init(&pmic_typec_pdphy->lock);
584 INIT_WORK(&pmic_typec_pdphy->reset_work, qcom_pmic_typec_pdphy_sig_reset_work);
591 irq_data->pmic_typec_pdphy = pmic_typec_pdphy;
604 tcpm->pmic_typec_pdphy = pmic_typec_pdphy;