Lines Matching refs:bbnsm
42 static u32 bbnsm_read_counter(struct bbnsm_rtc *bbnsm)
52 regmap_read(bbnsm->regmap, BBNSM_RTC_MS, &rtc_msb);
54 regmap_read(bbnsm->regmap, BBNSM_RTC_LS, &rtc_lsb);
64 struct bbnsm_rtc *bbnsm = dev_get_drvdata(dev);
68 regmap_read(bbnsm->regmap, BBNSM_CTRL, &val);
72 time = bbnsm_read_counter(bbnsm);
80 struct bbnsm_rtc *bbnsm = dev_get_drvdata(dev);
84 regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, RTC_EN_MSK, 0);
87 regmap_write(bbnsm->regmap, BBNSM_RTC_LS, time << CNTR_TO_SECS_SH);
88 regmap_write(bbnsm->regmap, BBNSM_RTC_MS, time >> (32 - CNTR_TO_SECS_SH));
91 regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, RTC_EN_MSK, RTC_EN);
98 struct bbnsm_rtc *bbnsm = dev_get_drvdata(dev);
101 regmap_read(bbnsm->regmap, BBNSM_TA, &bbnsm_ta);
104 regmap_read(bbnsm->regmap, BBNSM_EVENTS, &bbnsm_events);
112 struct bbnsm_rtc *bbnsm = dev_get_drvdata(dev);
115 regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, TA_EN_MSK, enable ? TA_EN : TA_DIS);
117 regmap_update_bits(bbnsm->regmap, BBNSM_INT_EN, TA_EN_MSK, enable ? TA_EN : TA_DIS);
124 struct bbnsm_rtc *bbnsm = dev_get_drvdata(dev);
128 regmap_update_bits(bbnsm->regmap, BBNSM_CTRL, TA_EN, TA_EN);
131 regmap_write(bbnsm->regmap, BBNSM_TA, time);
147 struct bbnsm_rtc *bbnsm = dev_get_drvdata(dev);
150 regmap_read(bbnsm->regmap, BBNSM_EVENTS, &val);
154 regmap_write_bits(bbnsm->regmap, BBNSM_EVENTS, TA_EN_MSK, BBNSM_EVENT_TA);
155 rtc_update_irq(bbnsm->rtc, 1, RTC_AF | RTC_IRQF);
166 struct bbnsm_rtc *bbnsm;
169 bbnsm = devm_kzalloc(&pdev->dev, sizeof(*bbnsm), GFP_KERNEL);
170 if (!bbnsm)
173 bbnsm->rtc = devm_rtc_allocate_device(&pdev->dev);
174 if (IS_ERR(bbnsm->rtc))
175 return PTR_ERR(bbnsm->rtc);
177 bbnsm->regmap = syscon_node_to_regmap(np->parent);
178 if (IS_ERR(bbnsm->regmap)) {
179 dev_dbg(&pdev->dev, "bbnsm get regmap failed\n");
180 return PTR_ERR(bbnsm->regmap);
183 bbnsm->irq = platform_get_irq(pdev, 0);
184 if (bbnsm->irq < 0)
185 return bbnsm->irq;
187 platform_set_drvdata(pdev, bbnsm);
190 regmap_write(bbnsm->regmap, BBNSM_EVENTS, 0x7A);
193 dev_pm_set_wake_irq(&pdev->dev, bbnsm->irq);
195 ret = devm_request_irq(&pdev->dev, bbnsm->irq, bbnsm_rtc_irq_handler,
199 bbnsm->irq, ret);
203 bbnsm->rtc->ops = &bbnsm_rtc_ops;
204 bbnsm->rtc->range_max = U32_MAX;
206 return devm_rtc_register_device(bbnsm->rtc);
210 { .compatible = "nxp,imx93-bbnsm-rtc" },