Patch for supporting CPR register in 16C950 UART

fabrizio.gennari@philips.com
Fri, 18 May 2001 18:14:23 +0200


--Boundary=_0.0_=0056900018047773
Content-Type: text/plain; charset=iso-8859-1; name="MEMO 05/18/01 18:00:46"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello.

Here is a patch (tested on kernels 2.4.3 and 2.4.4) that adds 2 ioctl's=
in serial.c. One, TCSSERCPR, sets the CPR register in 16C950 UARTs. Th=
is register is a pre-scaler (that is, a divisor) for the clock. If the =
value is N, the clock is divided by N/8.=20
If N<8, pre-scaling is disabled by setting bit 7 of MCR to 0. The other=
one, TCGSERCPR,, reads the value of CPR. If pre-scaling is disabled, i=
t returns 8 (i.e., the clock frequency is left intact).

The patch also disables resetting the UART via the CSR register every t=
ime the serial device is opened (in the startup() function). This would=
reset the content of CPR.
---------------------------------------------------------
Fabrizio Gennari tel. +39 039 203 7816
Philips Research Monza fax. +39 039 203 7800
via G. Casati 23 fabrizio.gennari@philips.com
20052 Monza (MI) Italy http://www.research.philips.com
=

--Boundary=_0.0_=0056900018047773
Content-Type: application/octet-stream; name=serial-patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=serial-patch

ZGlmZiAtcnVOIGxpbnV4LTIuNC4zL2RyaXZlcnMvY2hhci9zZXJpYWwuYyBsaW51eC0yLjQuMy1w
YXRjaGVkL2RyaXZlcnMvY2hhci9zZXJpYWwuYwotLS0gbGludXgtMi40LjMvZHJpdmVycy9jaGFy
L3NlcmlhbC5jCVdlZCBNYXIgIDcgMDU6MTM6NTEgMjAwMQorKysgbGludXgtMi40LjMtcGF0Y2hl
ZC9kcml2ZXJzL2NoYXIvc2VyaWFsLmMJRnJpIE1heSAxOCAxNjoyODozMCAyMDAxCkBAIC0xMjU5
LDcgKzEyNTksNyBAQAogCQlzZXJpYWxfb3V0cChpbmZvLCBVQVJUX0VGUiwgVUFSVF9FRlJfRUNC
KTsKIAkJc2VyaWFsX291dHAoaW5mbywgVUFSVF9JRVIsIDApOwogCQlzZXJpYWxfb3V0cChpbmZv
LCBVQVJUX0xDUiwgMCk7Ci0JCXNlcmlhbF9pY3Jfd3JpdGUoaW5mbywgVUFSVF9DU1IsIDApOyAv
KiBSZXNldCB0aGUgVUFSVCAqLworCQkvKgkJc2VyaWFsX2ljcl93cml0ZShpbmZvLCBVQVJUX0NT
UiwgMCk7ICovIC8qIFJlc2V0IHRoZSBVQVJUICovCiAJCXNlcmlhbF9vdXRwKGluZm8sIFVBUlRf
TENSLCAweEJGKTsKIAkJc2VyaWFsX291dHAoaW5mbywgVUFSVF9FRlIsIFVBUlRfRUZSX0VDQik7
CiAJCXNlcmlhbF9vdXRwKGluZm8sIFVBUlRfTENSLCAwKTsKQEAgLTEzNjQsOSArMTM2NCwxMiBA
QAogCSAqLwogCXNlcmlhbF9vdXRwKGluZm8sIFVBUlRfTENSLCBVQVJUX0xDUl9XTEVOOCk7CS8q
IHJlc2V0IERMQUIgKi8KIAotCWluZm8tPk1DUiA9IDA7CisJaWYgKHN0YXRlLT50eXBlID09IFBP
UlRfMTZDOTUwKQorCQlpbmZvLT5NQ1IgJj0gVUFSVF9NQ1JfUFJFU0NBTEVSOworCWVsc2UKKwkJ
aW5mby0+TUNSID0gMDsKIAlpZiAoaW5mby0+dHR5LT50ZXJtaW9zLT5jX2NmbGFnICYgQ0JBVUQp
Ci0JCWluZm8tPk1DUiA9IFVBUlRfTUNSX0RUUiB8IFVBUlRfTUNSX1JUUzsKKwkJaW5mby0+TUNS
IHw9IFVBUlRfTUNSX0RUUiB8IFVBUlRfTUNSX1JUUzsKICNpZmRlZiBDT05GSUdfU0VSSUFMX01B
TllfUE9SVFMKIAlpZiAoaW5mby0+ZmxhZ3MgJiBBU1lOQ19GT1VSUE9SVCkgewogCQlpZiAoc3Rh
dGUtPmlycSA9PSAwKQpAQCAtMjUxNCw2ICsyNTE3LDQxIEBACiB9CiAjZW5kaWYKIAorc3RhdGlj
IGludCBnZXRfY2xvY2tfcHJlc2NhbGVyKHN0cnVjdCBhc3luY19zdHJ1Y3QgKiBpbmZvLCB1bnNp
Z25lZCBjaGFyICp2YWx1ZSkKK3sKKwl1bnNpZ25lZCBjaGFyIGNwcjsKKworCWlmICghKHNlcmlh
bF9pbihpbmZvLCBVQVJUX01DUikgJiBVQVJUX01DUl9QUkVTQ0FMRVIpKQorCQljcHIgPSA4Owor
CWVsc2UKKwkJY3ByID0gc2VyaWFsX2ljcl9yZWFkKGluZm8sIFVBUlRfQ1BSKTsKKworCWlmIChj
b3B5X3RvX3VzZXIodmFsdWUsJmNwcixzaXplb2YodW5zaWduZWQgY2hhcikpKQorCQlyZXR1cm4g
LUVGQVVMVDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNldF9jbG9ja19wcmVzY2Fs
ZXIoc3RydWN0IGFzeW5jX3N0cnVjdCAqIGluZm8sIHVuc2lnbmVkIGNoYXIgKnZhbHVlKQorewor
CXVuc2lnbmVkIGNoYXIgY3ByOworCQorCWlmIChjb3B5X2Zyb21fdXNlcigmY3ByLHZhbHVlLHNp
emVvZih1bnNpZ25lZCBjaGFyKSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKGNwciA8IDgp
eworCQlpbmZvLT5NQ1IgJj0gflVBUlRfTUNSX1BSRVNDQUxFUjsKKwl9CisJZWxzZXsKKwkJaW5m
by0+TUNSIHw9IFVBUlRfTUNSX1BSRVNDQUxFUjsKKwl9CisJCisJc2VyaWFsX291dChpbmZvLCBV
QVJUX01DUiwgaW5mby0+TUNSKTsKKwlzZXJpYWxfaWNyX3dyaXRlKGluZm8sIFVBUlRfQ1BSLCBj
cHIpOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgcnNfaW9jdGwoc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogCQkgICAgdW5zaWduZWQgaW50IGNtZCwg
dW5zaWduZWQgbG9uZyBhcmcpCiB7CkBAIC0yNjY4LDYgKzI3MDYsMTQgQEAKIAkJCWlmIChjb3B5
X3RvX3VzZXIoKHZvaWQgKilhcmcsICZpY291bnQsIHNpemVvZihpY291bnQpKSkKIAkJCQlyZXR1
cm4gLUVGQVVMVDsKIAkJCXJldHVybiAwOworCQljYXNlIFRJT0NHU0VSQ1BSOiAvKiBHZXQgc2Vy
aWFsIGNsb2NrIHByZXNjYWxlciAqLworCQkJaWYgKGluZm8tPnN0YXRlLT50eXBlID09IFBPUlRf
MTZDOTUwKQorCQkJCXJldHVybiBnZXRfY2xvY2tfcHJlc2NhbGVyKGluZm8sICh1bnNpZ25lZCBj
aGFyICopIGFyZyk7CisJCQlyZXR1cm4gLUVOWElPOworCQljYXNlIFRJT0NTU0VSQ1BSOiAvKiBT
ZXQgc2VyaWFsIGNsb2NrIHByZXNjYWxlciAqLworCQkJaWYgKGluZm8tPnN0YXRlLT50eXBlID09
IFBPUlRfMTZDOTUwKQorCQkJCXJldHVybiBzZXRfY2xvY2tfcHJlc2NhbGVyKGluZm8sICh1bnNp
Z25lZCBjaGFyICopIGFyZyk7CisJCQlyZXR1cm4gLUVOWElPOwogCQljYXNlIFRJT0NTRVJHV0lM
RDoKIAkJY2FzZSBUSU9DU0VSU1dJTEQ6CiAJCQkvKiAic2V0c2VyaWFsIC1XIiBpcyBjYWxsZWQg
aW4gRGViaWFuIGJvb3QgKi8KZGlmZiAtcnVOIGxpbnV4LTIuNC4zL2luY2x1ZGUvYXNtLWkzODYv
aW9jdGxzLmggbGludXgtMi40LjMtcGF0Y2hlZC9pbmNsdWRlL2FzbS1pMzg2L2lvY3Rscy5oCi0t
LSBsaW51eC0yLjQuMy9pbmNsdWRlL2FzbS1pMzg2L2lvY3Rscy5oCUZyaSBKdWwgMjQgMjA6MTA6
MTYgMTk5OAorKysgbGludXgtMi40LjMtcGF0Y2hlZC9pbmNsdWRlL2FzbS1pMzg2L2lvY3Rscy5o
CVRodSBNYXkgMTcgMTY6MzQ6MDggMjAwMQpAQCAtNjcsNiArNjcsOCBAQAogI2RlZmluZSBUSU9D
R0lDT1VOVAkweDU0NUQJLyogcmVhZCBzZXJpYWwgcG9ydCBpbmxpbmUgaW50ZXJydXB0IGNvdW50
cyAqLwogI2RlZmluZSBUSU9DR0hBWUVTRVNQICAgMHg1NDVFICAvKiBHZXQgSGF5ZXMgRVNQIGNv
bmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgVElPQ1NIQVlFU0VTUCAgIDB4NTQ1RiAgLyogU2V0IEhh
eWVzIEVTUCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIFRJT0NHU0VSQ1BSICAgMHg1NDYwICAv
KiBHZXQgc2VyaWFsIGNsb2NrIHByZXNjYWxlciovCisjZGVmaW5lIFRJT0NTU0VSQ1BSICAgMHg1
NDYxICAvKiBTZXQgc2VyaWFsIGNsb2NrIHByZXNjYWxlciovCiAKIC8qIFVzZWQgZm9yIHBhY2tl
dCBtb2RlICovCiAjZGVmaW5lIFRJT0NQS1RfREFUQQkJIDAKZGlmZiAtcnVOIGxpbnV4LTIuNC4z
L2luY2x1ZGUvbGludXgvc2VyaWFsX3JlZy5oIGxpbnV4LTIuNC4zLXBhdGNoZWQvaW5jbHVkZS9s
aW51eC9zZXJpYWxfcmVnLmgKLS0tIGxpbnV4LTIuNC4zL2luY2x1ZGUvbGludXgvc2VyaWFsX3Jl
Zy5oCVdlZCBNYXIgIDcgMDQ6Mjg6MzUgMjAwMQorKysgbGludXgtMi40LjMtcGF0Y2hlZC9pbmNs
dWRlL2xpbnV4L3NlcmlhbF9yZWcuaAlUaHUgTWF5IDE3IDE2OjIzOjMyIDIwMDEKQEAgLTEyMSw2
ICsxMjEsNyBAQAogLyoKICAqIFRoZXNlIGFyZSB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBNb2Rl
bSBDb250cm9sIFJlZ2lzdGVyCiAgKi8KKyNkZWZpbmUgVUFSVF9NQ1JfUFJFU0NBTEVSCTB4ODAJ
LyogRW5hYmxlIGNsb2NrIHByZXNjYWxlciAqLwogI2RlZmluZSBVQVJUX01DUl9MT09QCTB4MTAJ
LyogRW5hYmxlIGxvb3BiYWNrIHRlc3QgbW9kZSAqLwogI2RlZmluZSBVQVJUX01DUl9PVVQyCTB4
MDgJLyogT3V0MiBjb21wbGVtZW50ICovCiAjZGVmaW5lIFVBUlRfTUNSX09VVDEJMHgwNAkvKiBP
dXQxIGNvbXBsZW1lbnQgKi8K

--Boundary=_0.0_=0056900018047773--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/