Re: [PATCH 4/7] serial: qcom-geni: Use geni_se_set_rate() for source clock configuration
Mukesh Savaliya <[email protected]>
| Newsgroups | org.kernel.vger.linux-pm,org.infradead.lists.linux-arm-kernel,org.kernel.vger.arm-scmi,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-i2c,org.kernel.vger.linux-kernel,org.kernel.vger.linux-serial,org.kernel.vger.linux-spi |
|---|---|
| Message-ID | <[email protected]> |
On 8/5/2026 1:27 AM, Praveen Talari wrote: > The driver calls dev_pm_opp_set_rate() directly on uport->dev to apply > the computed source clock frequency, and dispatches baud rate handling > through a per-variant dev_data->set_rate() callback that either > recalculates the clock divider (Linux clock managed path) or selects > a performance level via geni_se_set_perf_level() (SA8255P firmware > managed path). > > Now that geni_se_domain_attach() populates se->clk_perf_tbl from the > perf domain's OPP table, geni_se_clk_freq_match() can resolve a source > clock frequency and divider on the SA8255P path the same way it > already does for the Linux clock managed path. This removes the need > for a separate perf-level based set_rate implementation, so > geni_serial_set_rate() can be called unconditionally and > dev_data->set_rate can be dropped. > > Switch to calling geni_serial_set_rate() directly from > qcom_geni_serial_set_termios(), and use geni_se_set_rate() in place of > dev_pm_opp_set_rate() so the frequency is applied to the correct > device (the perf domain device on the firmware managed path, or > uport->dev otherwise) without the driver needing to know which > resources_init variant is in use. Remove the now-unused set_rate field > from struct qcom_geni_device_data and its per-variant initializers. > This commit message seems quite long and repeats the rationale few times: 1. removes need for perf-level based set_rate 2. call geni_serial_set_rate unconditionally 3. use geni_se_set_rate instead of dev_pm_opp_set_rate Review, if below makes sense, tried to shorten it. geni_se_set_rate() now abstracts source clock programming for both clock-managed and SCMI/perf-domain managed GENI instances. Use geni_serial_set_rate() unconditionally from qcom_geni_serial_set_termios() and remove the per-variant set_rate() callback. This allows the UART driver to configure source clocks without needing to know whether resources are managed through Linux clocks or the SA8255P firmware-controlled performance domain. > Signed-off-by: Praveen Talari <[email protected]> > ---