An assortment of improvements for auxdisplay:
- Replace symbolic permissions with octal permissions (Jinchao Wang) - ks0108: Switch to use module_parport_driver() (Andy Shevchenko) - charlcd: Drop unneeded initializers and switch to C99 style (Andy Shevchenko) - hd44780: Fix oops on module unloading (Lars Poeschel) - Add I2C gpio expander example (Ralf Schlatterbeck) -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPjU5OPd5QIZ9jqqOGXyLc2htIW0FAmE5TdMACgkQGXyLc2ht IW37IxAA3uo65liDipZaiXCgI5DbjAz2nRYZnlNEpNP8PpxHi6Lc0fNv3eDcHLpz 2MbDDi+c77P7G53WpTEb3XqOyeLpvfuxgCgzAC9LgE0g/fWTlk2qWpM6N60MwE2J Kc6U2hOTvkMtxKlGljDxhReTApwl1KSIyGRu1KOlbA48uyGQZPu+CxsGg49tbXkp hxDK2ELewrFGyKY0WOJkZK8iyeqzw5ltH3pMd0pWItquth2WMnaAkp/gbK2SZsVH cWIy/OBWga7giM6j+Ml2JHxHVV5+u1MLQgLaBXYdZqtpwu7S4agpOat8i7lYD/Ft Y6pKa7fMaSeUCQXZvZQ1nOr/kCLcax4abQNUIyOeTC/+FNZxStutzKukmscgI9gf 68EbUsNq/Qzh5YjxB5bkaC5tL3ml8OMAI1DQQk6etF6gcZinwlgzBJvePVaCPUjJ ncJQKpDqlbjAZSxNoZ2Xf4t7HK7+V08oBjCTNdUn6qDCXyQ6AH2k4LrdCEGeq1OD 2wxO88b8GO7HCjgqjWBB+u30sLtWu0kfHIBuLwjzWdxXnTez0uDKcbgV0BHeAW2C xy8G5HMPGVfaKLjgWXqVAagEsMw7aPGlrQ3Q3LPj91h1NxPnreByeeZseM/jYfCh OmlNEMK/TaYLbM0q3MXw5tkm3jDhmw2iUlFYcISG4JQEal937hA= =FcED -----END PGP SIGNATURE----- Merge tag 'auxdisplay-for-linus-v5.15-rc1' of git://github.com/ojeda/linux Pull auxdisplay updates from Miguel Ojeda: "An assortment of improvements for auxdisplay: - Replace symbolic permissions with octal permissions (Jinchao Wang) - ks0108: Switch to use module_parport_driver() (Andy Shevchenko) - charlcd: Drop unneeded initializers and switch to C99 style (Andy Shevchenko) - hd44780: Fix oops on module unloading (Lars Poeschel) - Add I2C gpio expander example (Ralf Schlatterbeck)" * tag 'auxdisplay-for-linus-v5.15-rc1' of git://github.com/ojeda/linux: auxdisplay: Replace symbolic permissions with octal permissions auxdisplay: ks0108: Switch to use module_parport_driver() auxdisplay: charlcd: Drop unneeded initializers and switch to C99 style auxdisplay: hd44780: Fix oops on module unloading auxdisplay: Add I2C gpio expander example
This commit is contained in:
commit
d41adc4e22
|
@ -12,7 +12,10 @@ maintainers:
|
|||
description:
|
||||
The Hitachi HD44780 Character LCD Controller is commonly used on character
|
||||
LCDs that can display one or more lines of text. It exposes an M6800 bus
|
||||
interface, which can be used in either 4-bit or 8-bit mode.
|
||||
interface, which can be used in either 4-bit or 8-bit mode. By using a
|
||||
GPIO expander it is possible to use the driver with one of the popular I2C
|
||||
expander boards based on the PCF8574 available for these displays. For
|
||||
an example see below.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
|
@ -94,3 +97,29 @@ examples:
|
|||
display-height-chars = <2>;
|
||||
display-width-chars = <16>;
|
||||
};
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pcf8574: pcf8574@27 {
|
||||
compatible = "nxp,pcf8574";
|
||||
reg = <0x27>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
};
|
||||
hd44780 {
|
||||
compatible = "hit,hd44780";
|
||||
display-height-chars = <2>;
|
||||
display-width-chars = <16>;
|
||||
data-gpios = <&pcf8574 4 0>,
|
||||
<&pcf8574 5 0>,
|
||||
<&pcf8574 6 0>,
|
||||
<&pcf8574 7 0>;
|
||||
enable-gpios = <&pcf8574 2 0>;
|
||||
rs-gpios = <&pcf8574 0 0>;
|
||||
rw-gpios = <&pcf8574 1 0>;
|
||||
backlight-gpios = <&pcf8574 3 0>;
|
||||
};
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
*/
|
||||
|
||||
static unsigned int cfag12864b_rate = CONFIG_CFAG12864B_RATE;
|
||||
module_param(cfag12864b_rate, uint, S_IRUGO);
|
||||
module_param(cfag12864b_rate, uint, 0444);
|
||||
MODULE_PARM_DESC(cfag12864b_rate,
|
||||
"Refresh rate (hertz)");
|
||||
|
||||
|
|
|
@ -637,9 +637,7 @@ static int panel_notify_sys(struct notifier_block *this, unsigned long code,
|
|||
}
|
||||
|
||||
static struct notifier_block panel_notifier = {
|
||||
panel_notify_sys,
|
||||
NULL,
|
||||
0
|
||||
.notifier_call = panel_notify_sys,
|
||||
};
|
||||
|
||||
int charlcd_register(struct charlcd *lcd)
|
||||
|
|
|
@ -323,8 +323,8 @@ static int hd44780_remove(struct platform_device *pdev)
|
|||
{
|
||||
struct charlcd *lcd = platform_get_drvdata(pdev);
|
||||
|
||||
kfree(lcd->drvdata);
|
||||
charlcd_unregister(lcd);
|
||||
kfree(lcd->drvdata);
|
||||
|
||||
kfree(lcd);
|
||||
return 0;
|
||||
|
|
|
@ -28,11 +28,11 @@
|
|||
*/
|
||||
|
||||
static unsigned int ks0108_port = CONFIG_KS0108_PORT;
|
||||
module_param(ks0108_port, uint, S_IRUGO);
|
||||
module_param(ks0108_port, uint, 0444);
|
||||
MODULE_PARM_DESC(ks0108_port, "Parallel port where the LCD is connected");
|
||||
|
||||
static unsigned int ks0108_delay = CONFIG_KS0108_DELAY;
|
||||
module_param(ks0108_delay, uint, S_IRUGO);
|
||||
module_param(ks0108_delay, uint, 0444);
|
||||
MODULE_PARM_DESC(ks0108_delay, "Delay between each control writing (microseconds)");
|
||||
|
||||
/*
|
||||
|
@ -167,19 +167,7 @@ static struct parport_driver ks0108_parport_driver = {
|
|||
.detach = ks0108_parport_detach,
|
||||
.devmodel = true,
|
||||
};
|
||||
|
||||
static int __init ks0108_init(void)
|
||||
{
|
||||
return parport_register_driver(&ks0108_parport_driver);
|
||||
}
|
||||
|
||||
static void __exit ks0108_exit(void)
|
||||
{
|
||||
parport_unregister_driver(&ks0108_parport_driver);
|
||||
}
|
||||
|
||||
module_init(ks0108_init);
|
||||
module_exit(ks0108_exit);
|
||||
module_parport_driver(ks0108_parport_driver);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_AUTHOR("Miguel Ojeda <ojeda@kernel.org>");
|
||||
|
|
Loading…
Reference in New Issue