Message ID | 1597131794-1076-1-git-send-email-parashar@codeaurora.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [V2] serial: qcom_geni_serial: To correct QUP Version detection logic | expand |
On Tue, Aug 11, 2020 at 01:13:14PM +0530, Paras Sharma wrote: > The current implementation reduces the sampling rate by half > if qup HW version greater is than 2.5 by checking if the geni > SE major version is greater than 2 and geni SE minor version > is greater than 5. > > This implementation fails when the version is 3 or greater. > > Hence by adding the another check for geni SE major version, > this problem can be solved. > > Signed-off-by: Paras Sharma <parashar@codeaurora.org> > --- > drivers/tty/serial/qcom_geni_serial.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) Should this go to stable kernels? If so, how far back? What git commit id is this patch fixing? And if so, why not put a Fixes: tag on this as well? thanks, greg k-h
Hi, Paras Sharma <parashar@codeaurora.org> writes: > The current implementation reduces the sampling rate by half > if qup HW version greater is than 2.5 by checking if the geni ^^^^^^^^^^^^^^^ is greater than could, possibly, be fixed while applying. > SE major version is greater than 2 and geni SE minor version > is greater than 5. > > This implementation fails when the version is 3 or greater. > > Hence by adding the another check for geni SE major version, > this problem can be solved. > > Signed-off-by: Paras Sharma <parashar@codeaurora.org> > --- > drivers/tty/serial/qcom_geni_serial.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index 3aa29d2..a9f92d8 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > @@ -995,7 +995,8 @@ static void qcom_geni_serial_set_termios(struct uart_port *uport, > sampling_rate = UART_OVERSAMPLING; > /* Sampling rate is halved for IP versions >= 2.5 */ > ver = geni_se_get_qup_hw_version(&port->se); > - if (GENI_SE_VERSION_MAJOR(ver) >= 2 && GENI_SE_VERSION_MINOR(ver) >= 5) > + if ((GENI_SE_VERSION_MAJOR(ver) >= 2 && GENI_SE_VERSION_MINOR(ver) >= 5) > + || GENI_SE_VERSION_MAJOR(ver) >= 3) it looks like having a single GENI_SE_VERSION() that returns MAJOR and MINOR without STEP would look better here. Then you could use: if (GENI_SE_VERSION(ver) >= 0x20050000) and it would work for any future version. Not a strong opinion, though
On Tue, Aug 11, 2020 at 10:23:30AM +0200, Greg Kroah-Hartman wrote: > On Tue, Aug 11, 2020 at 01:13:14PM +0530, Paras Sharma wrote: > > The current implementation reduces the sampling rate by half > > if qup HW version greater is than 2.5 by checking if the geni > > SE major version is greater than 2 and geni SE minor version > > is greater than 5. > > > > This implementation fails when the version is 3 or greater. > > > > Hence by adding the another check for geni SE major version, > > this problem can be solved. > > > > Signed-off-by: Paras Sharma <parashar@codeaurora.org> > > --- > > drivers/tty/serial/qcom_geni_serial.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > Should this go to stable kernels? If so, how far back? What git commit > id is this patch fixing? And if so, why not put a Fixes: tag on this as > well? Dropped from my review queue due to lack of response, please fix up and resend when you wish to have it reviewed again... greg k-h
diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c index 3aa29d2..a9f92d8 100644 --- a/drivers/tty/serial/qcom_geni_serial.c +++ b/drivers/tty/serial/qcom_geni_serial.c @@ -995,7 +995,8 @@ static void qcom_geni_serial_set_termios(struct uart_port *uport, sampling_rate = UART_OVERSAMPLING; /* Sampling rate is halved for IP versions >= 2.5 */ ver = geni_se_get_qup_hw_version(&port->se); - if (GENI_SE_VERSION_MAJOR(ver) >= 2 && GENI_SE_VERSION_MINOR(ver) >= 5) + if ((GENI_SE_VERSION_MAJOR(ver) >= 2 && GENI_SE_VERSION_MINOR(ver) >= 5) + || GENI_SE_VERSION_MAJOR(ver) >= 3) sampling_rate /= 2; clk_rate = get_clk_div_rate(baud, sampling_rate, &clk_div);
The current implementation reduces the sampling rate by half if qup HW version greater is than 2.5 by checking if the geni SE major version is greater than 2 and geni SE minor version is greater than 5. This implementation fails when the version is 3 or greater. Hence by adding the another check for geni SE major version, this problem can be solved. Signed-off-by: Paras Sharma <parashar@codeaurora.org> --- drivers/tty/serial/qcom_geni_serial.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)