Linux Kernel Mentee: Remove Legacy Power Management.
The purpose of this patch series is to upgrade power management in video fbdev
drivers. This has been done by upgrading .suspend() and .resume() callbacks.
The upgrade makes sure that the involvement of PCI Core does not change the
order of operations executed in a driver. Thus, does not change its behavior.
In general, drivers with legacy PM, .suspend() and .resume() make use of PCI
helper functions like pci_enable/disable_device_mem(), pci_set_power_state(),
pci_save/restore_state(), pci_enable/disable_device(), etc. to complete
their job.
The conversion requires the removal of those function calls, change the
callbacks' definition accordingly and make use of dev_pm_ops structure.
All patches are compile-tested only.
Test tools:
- Compiler: gcc (GCC) 10.1.0
- allmodconfig build: make -j$(nproc) W=1 all
Vaibhav Gupta (12):
fbdev: gxfb: use generic power management
fbdev: lxfb: use generic power management
fbdev: via-core: use generic power management
fbdev: aty: use generic power management
fbdev: aty128fb: use generic power management
fbdev: nvidia: use generic power management
fbdev: savagefb: use generic power management
fbdev: cyber2000fb: use generic power management
fbdev: i740fb: use generic power management
fbdev: vt8623fb: use generic power management
fbdev: s3fb: use generic power management
fbdev: arkfb: use generic power management
drivers/video/fbdev/arkfb.c | 41 ++++++-------
drivers/video/fbdev/aty/aty128fb.c | 51 ++++++++++------
drivers/video/fbdev/aty/atyfb_base.c | 50 ++++++++++-----
drivers/video/fbdev/cyber2000fb.c | 13 ++--
drivers/video/fbdev/geode/gxfb.h | 5 --
drivers/video/fbdev/geode/gxfb_core.c | 36 ++++++-----
drivers/video/fbdev/geode/lxfb.h | 5 --
drivers/video/fbdev/geode/lxfb_core.c | 37 +++++------
drivers/video/fbdev/geode/lxfb_ops.c | 4 --
drivers/video/fbdev/geode/suspend_gx.c | 4 --
drivers/video/fbdev/i740fb.c | 40 +++++-------
drivers/video/fbdev/nvidia/nvidia.c | 64 +++++++++++---------
drivers/video/fbdev/s3fb.c | 39 +++++-------
drivers/video/fbdev/savage/savagefb_driver.c | 52 ++++++++++------
drivers/video/fbdev/via/via-core.c | 39 +++++-------
drivers/video/fbdev/vt8623fb.c | 41 ++++++-------
include/linux/via-core.h | 2 -
17 files changed, 267 insertions(+), 256 deletions(-)
--
2.28.0
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. This way we can
remove the legacy .suspend & .resume bindings from "gxfb_driver".
The gxfb_suspend() is designed to function only in the case of Suspend.
Thus, the code was kept inside "if (state.event = PM_EVENT_SUSPEND)"
container. This is because, in the legacy framework, this callback was
invoked even in the event of Freeze and Hibernate. Hence, added the load of
unnecessary function-calls.
The goal can be achieved by binding the callback with only
"gxfb_pm_ops.suspend" in the new framework. This also avoids the step of
checking "if (state.event = PM_EVENT_SUSPEND)" every time the callback is
invoked.
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/geode/gxfb.h | 5 ----
drivers/video/fbdev/geode/gxfb_core.c | 36 ++++++++++++++------------
drivers/video/fbdev/geode/suspend_gx.c | 4 ---
3 files changed, 20 insertions(+), 25 deletions(-)
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. This way we can
remove the legacy .suspend & .resume bindings from "lxfb_driver".
The lxfb_suspend() is designed to function only in the case of Suspend.
Thus, the code was kept inside "if (state.event = PM_EVENT_SUSPEND)"
container. This is because, in the legacy framework, this callback was
invoked even in the event of Freeze and Hibernate. Hence, added the load of
unnecessary function-calls.
The goal can be achieved by binding the callback with only
"lxfb_pm_ops.suspend" in the new framework. This also avoids the step of
checking "if (state.event = PM_EVENT_SUSPEND)" every time the callback is
invoked.
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/geode/lxfb.h | 5 ----
drivers/video/fbdev/geode/lxfb_core.c | 37 +++++++++++++++------------
drivers/video/fbdev/geode/lxfb_ops.c | 4 ---
3 files changed, 20 insertions(+), 26 deletions(-)
@@ -64,11 +62,8 @@ int lx_blank_display(struct fb_info *, int);voidlx_set_palette_reg(structfb_info*,unsignedint,unsignedint,unsignedint,unsignedint);-#ifdef CONFIG_PMintlx_powerdown(structfb_info*info);intlx_powerup(structfb_info*info);-#endif-/* Graphics Processor registers (table 6-29 from the data book) */enumgp_registers{
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
Now,
- atyfb_pci_suspend() had a "pm_message_t" type parameter as per legacy
PCI PM framework, that got deprecated in generic.
- Rename the callback as atyfb_pci_suspend_late() and preserve the
parameter.
- Define 3 new callbacks as:
* atyfb_pci_suspend()
* atyfb_pci_freeze()
* atyfb_pci_hibernate()
which in turn call atyfb_pci_suspend_late() by passing appropriate
value for "pm_message_t" type parameter.
- Bind the callbacks in "struct dev_pm_ops" type variable
"atyfb_pci_pm_ops".
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/aty/atyfb_base.c | 50 ++++++++++++++++++++--------
1 file changed, 36 insertions(+), 14 deletions(-)
@@ -1994,7 +1994,7 @@ static int atyfb_mmap(struct fb_info *info, struct vm_area_struct *vma)-#if defined(CONFIG_PM) && defined(CONFIG_PCI)+#if defined(CONFIG_PCI)#ifdef CONFIG_PPC_PMAC/* Power management routines. Those are used for PowerBook sleep.
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks.
The via_suspend() is designed to function only in the case of Suspend.
Thus, the code checked for "if (state.event != PM_EVENT_SUSPEND)". This is
because, in the legacy framework, this callback was invoked even in the
event of Freeze and Hibernate. Hence, added the load of unnecessary
function-calls.
The goal can be achieved by binding the callback with only
"via_pm_ops.suspend" in the new framework. This also avoids the step of
checking "if (state.event != PM_EVENT_SUSPEND)" every time the callback is
invoked.
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/via/via-core.c | 39 ++++++++++++------------------
include/linux/via-core.h | 2 --
2 files changed, 16 insertions(+), 25 deletions(-)
@@ -580,12 +579,10 @@ void viafb_pm_unregister(struct viafb_pm_hooks *hooks)}EXPORT_SYMBOL_GPL(viafb_pm_unregister);-staticintvia_suspend(structpci_dev*pdev,pm_message_tstate)+staticint__maybe_unusedvia_suspend(structdevice*dev){structviafb_pm_hooks*hooks;-if(state.event!=PM_EVENT_SUSPEND)-return0;/**"I've occasionally hit a few drivers that caused suspend*failures,andeachandeverytimeitwasadriverbug,and
@@ -600,24 +597,13 @@ static int via_suspend(struct pci_dev *pdev, pm_message_t state)hooks->suspend(hooks->private);mutex_unlock(&viafb_pm_hooks_lock);-pci_save_state(pdev);-pci_disable_device(pdev);-pci_set_power_state(pdev,pci_choose_state(pdev,state));return0;}-staticintvia_resume(structpci_dev*pdev)+staticint__maybe_unusedvia_resume(structdevice*dev){structviafb_pm_hooks*hooks;-/* Get the bus side powered up */-pci_set_power_state(pdev,PCI_D0);-pci_restore_state(pdev);-if(pci_enable_device(pdev))-return0;--pci_set_master(pdev);-/* Now bring back any subdevs */mutex_lock(&viafb_pm_hooks_lock);list_for_each_entry(hooks,&viafb_pm_hooks,list)
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
Now,
- aty128_pci_suspend() had a "pm_message_t" type parameter as per legacy
PCI PM framework that got deprecated in generic.
- Rename the callback as aty128_pci_suspend_late() and preserve the
parameter.
- Define 3 new callbacks as:
* aty128_pci_suspend()
* aty128_pci_freeze()
* aty128_pci_hibernate()
which in turn call aty128_pci_suspend_late() by passing appropriate
value for "pm_message_t" type parameter.
- Bind the callbacks in "struct dev_pm_ops" type variable
"aty128_pci_pm_ops".
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/aty/aty128fb.c | 51 ++++++++++++++++++++----------
1 file changed, 34 insertions(+), 17 deletions(-)
@@ -2347,23 +2357,15 @@ static void aty128_set_suspend(struct aty128fb_par *par, int suspend)aty_st_le32(BUS_CNTL1,0x00000010);aty_st_le32(MEM_POWER_MISC,0x0c830000);msleep(100);--/* Switch PCI power management to D2 */-pci_set_power_state(pdev,PCI_D2);}}-staticintaty128_pci_suspend(structpci_dev*pdev,pm_message_tstate)+staticintaty128_pci_suspend_late(structdevice*dev,pm_message_tstate){+structpci_dev*pdev=to_pci_dev(dev);structfb_info*info=pci_get_drvdata(pdev);structaty128fb_par*par=info->par;-/* Because we may change PCI D state ourselves, we need to-*firstsavetheconfigspacecontentsothecorecan-*restoreitproperlyonresume.-*/-pci_save_state(pdev);-/* We don't do anything but D2, for now we return 0, but*wemaywanttochangethat.HowdoweknowiftheBIOS*canproperlytakecareofD3?Also,withswsusp,we
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
Now,
- nvidiafb_suspend() had a "pm_message_t" type parameter as per legacy
PCI PM framework that got deprecated in generic.
- Rename the callback as nvidiafb_suspend_late() and preserve the
parameter.
- Define 3 new callbacks as:
* nvidiafb_suspend()
* nvidiafb_freeze()
* nvidiafb_hibernate()
which in turn call nvidiafb_suspend_late() by passing appropriate value
for "pm_message_t" type parameter.
- Bind the callbacks in "struct dev_pm_ops" type variable
"nvidiafb_pm_ops".
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/nvidia/nvidia.c | 64 ++++++++++++++++-------------
1 file changed, 35 insertions(+), 29 deletions(-)
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
Now,
- savagefb_suspend() had a "pm_message_t" type parameter as per legacy
PCI PM framework that got deprecated in generic.
- Rename the callback as savagefb_suspend_late() and preserve the
parameter.
- Define 3 new callbacks as:
* savagefb_suspend()
* savagefb_freeze()
* savagefb_hibernate()
which in turn call savagefb_suspend_late() by passing appropriate value
for "pm_message_t" type parameter.
- Bind the callbacks in "struct dev_pm_ops" type variable
"savagefb_pm_ops".
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/savage/savagefb_driver.c | 52 ++++++++++++--------
1 file changed, 32 insertions(+), 20 deletions(-)
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. This way we can
remove the legacy .suspend & .resume bindings from "lxfb_driver".
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/cyber2000fb.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
The vt8623_pci_suspend() is not designed to function in the case of Freeze.
Thus, the code checked for "if (state.event = PM_EVENT_FREEZE....)". This
is because, in the legacy framework, this callback was invoked even in the
event of Freeze. Hence, added the load of unnecessary function-call.
The goal can be achieved by binding the callback with only ".suspend" and
".poweroff" in the "vt8623_pci_pm_ops" const variable. This also avoids the
step of checking "state.event = PM_EVENT_FREEZE" every time the callback
is invoked.
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/vt8623fb.c | 41 ++++++++++++++--------------------
1 file changed, 17 insertions(+), 24 deletions(-)
@@ -862,14 +857,6 @@ static int vt8623_pci_resume(struct pci_dev* dev)if(par->ref_count=0)gotofail;-pci_set_power_state(dev,PCI_D0);-pci_restore_state(dev);--if(pci_enable_device(dev))-gotofail;--pci_set_master(dev);-vt8623fb_set_par(info);fb_set_suspend(info,0);
@@ -879,10 +866,17 @@ static int vt8623_pci_resume(struct pci_dev* dev)return0;}-#else-#define vt8623_pci_suspend NULL-#define vt8623_pci_resume NULL-#endif /* CONFIG_PM */++staticconststructdev_pm_opsvt8623_pci_pm_ops={+#ifdef CONFIG_PM_SLEEP+.suspend=vt8623_pci_suspend,+.resume=vt8623_pci_resume,+.freeze=NULL,+.thaw=vt8623_pci_resume,+.poweroff=vt8623_pci_suspend,+.restore=vt8623_pci_resume,+#endif /* CONFIG_PM_SLEEP */+};/* List of boards that we are trying to support */
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
The i740fb_suspend() is not designed to function in the case of Freeze.
Thus, the code checked for "if (state.event = PM_EVENT_FREEZE....)". This
is because, in the legacy framework, this callback was invoked even in the
event of Freeze. Hence, added the load of unnecessary function-call.
The goal can be achieved by binding the callback with only ".suspend" and
".poweroff" in the "i740fb_pm_ops" const variable. This also avoids the
step of checking "if (state.event = PM_EVENT_FREEZE....)" every time the
callback is invoked.
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/i740fb.c | 40 +++++++++++++++---------------------
1 file changed, 16 insertions(+), 24 deletions(-)
@@ -1175,16 +1175,11 @@ static void i740fb_remove(struct pci_dev *dev)}}-#ifdef CONFIG_PM-staticinti740fb_suspend(structpci_dev*dev,pm_message_tstate)+staticint__maybe_unusedi740fb_suspend(structdevice*dev){-structfb_info*info=pci_get_drvdata(dev);+structfb_info*info=dev_get_drvdata(dev);structi740fb_par*par=info->par;-/* don't disable console during hibernation and wakeup from it */-if(state.event=PM_EVENT_FREEZE||state.event=PM_EVENT_PRETHAW)-return0;-console_lock();mutex_lock(&(par->open_lock));
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
The ark_pci_suspend() is not designed to function in the case of Freeze.
Thus, the code checked for "if (state.event = PM_EVENT_FREEZE....)". This
is because, in the legacy framework, this callback was invoked even in the
event of Freeze. Hence, added the load of unnecessary function-call.
The goal can be achieved by binding the callback with only ".suspend" and
".poweroff" in the "ark_pci_pm_ops" const variable. This also avoids the
step of checking "state.event = PM_EVENT_FREEZE" every time the callback
is invoked.
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/arkfb.c | 41 +++++++++++++++----------------------
1 file changed, 17 insertions(+), 24 deletions(-)
@@ -1132,14 +1127,6 @@ static int ark_pci_resume (struct pci_dev* dev)if(par->ref_count=0)gotofail;-pci_set_power_state(dev,PCI_D0);-pci_restore_state(dev);--if(pci_enable_device(dev))-gotofail;--pci_set_master(dev);-arkfb_set_par(info);fb_set_suspend(info,0);
@@ -1148,10 +1135,17 @@ static int ark_pci_resume (struct pci_dev* dev)console_unlock();return0;}-#else-#define ark_pci_suspend NULL-#define ark_pci_resume NULL-#endif /* CONFIG_PM */++staticconststructdev_pm_opsark_pci_pm_ops={+#ifdef CONFIG_PM_SLEEP+.suspend=ark_pci_suspend,+.resume=ark_pci_resume,+.freeze=NULL,+.thaw=ark_pci_resume,+.poweroff=ark_pci_suspend,+.restore=ark_pci_resume,+#endif+};/* List of boards that we are trying to support */
Drivers should do only device-specific jobs. But in general, drivers using
legacy PCI PM framework for .suspend()/.resume() have to manage many PCI
PM-related tasks themselves which can be done by PCI Core itself. This
brings extra load on the driver and it directly calls PCI helper functions
to handle them.
Switch to the new generic framework by updating function signatures and
define a "struct dev_pm_ops" variable to bind PM callbacks. Also, remove
unnecessary calls to the PCI Helper functions along with the legacy
.suspend & .resume bindings.
The s3_pci_suspend() is not designed to function in the case of Freeze.
Thus, the code checked for "if (state.event = PM_EVENT_FREEZE....)". This
is because, in the legacy framework, this callback was invoked even in the
event of Freeze. Hence, added the load of unnecessary function-call.
The goal can be achieved by binding the callback with only ".suspend" and
".poweroff" in the "s3_pci_pm_ops" const variable. This also avoids the
step of checking "state.event = PM_EVENT_FREEZE" every time the callback
is invoked.
Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com>
---
drivers/video/fbdev/s3fb.c | 39 ++++++++++++++++----------------------
1 file changed, 16 insertions(+), 23 deletions(-)
@@ -1458,17 +1453,6 @@ static int s3_pci_resume(struct pci_dev* dev)return0;}-pci_set_power_state(dev,PCI_D0);-pci_restore_state(dev);-err=pci_enable_device(dev);-if(err){-mutex_unlock(&(par->open_lock));-console_unlock();-dev_err(info->device,"error %d enabling device for resume\n",err);-returnerr;-}-pci_set_master(dev);-s3fb_set_par(info);fb_set_suspend(info,0);
@@ -1478,6 +1462,16 @@ static int s3_pci_resume(struct pci_dev* dev)return0;}+staticconststructdev_pm_opss3_pci_pm_ops={+#ifdef CONFIG_PM_SLEEP+.suspend=s3_pci_suspend,+.resume=s3_pci_resume,+.freeze=NULL,+.thaw=s3_pci_resume,+.poweroff=s3_pci_suspend,+.restore=s3_pci_resume,+#endif+};/* List of boards that we are trying to support */
Linux Kernel Mentee: Remove Legacy Power Management.
The purpose of this patch series is to upgrade power management in video fbdev
drivers. This has been done by upgrading .suspend() and .resume() callbacks.
The upgrade makes sure that the involvement of PCI Core does not change the
order of operations executed in a driver. Thus, does not change its behavior.
In general, drivers with legacy PM, .suspend() and .resume() make use of PCI
helper functions like pci_enable/disable_device_mem(), pci_set_power_state(),
pci_save/restore_state(), pci_enable/disable_device(), etc. to complete
their job.
The conversion requires the removal of those function calls, change the
callbacks' definition accordingly and make use of dev_pm_ops structure.
All patches are compile-tested only.
Test tools:
- Compiler: gcc (GCC) 10.1.0
- allmodconfig build: make -j$(nproc) W=1 all
Vaibhav Gupta (12):
fbdev: gxfb: use generic power management
fbdev: lxfb: use generic power management
fbdev: via-core: use generic power management
fbdev: aty: use generic power management
fbdev: aty128fb: use generic power management
fbdev: nvidia: use generic power management
fbdev: savagefb: use generic power management
fbdev: cyber2000fb: use generic power management
fbdev: i740fb: use generic power management
fbdev: vt8623fb: use generic power management
fbdev: s3fb: use generic power management
fbdev: arkfb: use generic power management
drivers/video/fbdev/arkfb.c | 41 ++++++-------
drivers/video/fbdev/aty/aty128fb.c | 51 ++++++++++------
drivers/video/fbdev/aty/atyfb_base.c | 50 ++++++++++-----
drivers/video/fbdev/cyber2000fb.c | 13 ++--
drivers/video/fbdev/geode/gxfb.h | 5 --
drivers/video/fbdev/geode/gxfb_core.c | 36 ++++++-----
drivers/video/fbdev/geode/lxfb.h | 5 --
drivers/video/fbdev/geode/lxfb_core.c | 37 +++++------
drivers/video/fbdev/geode/lxfb_ops.c | 4 --
drivers/video/fbdev/geode/suspend_gx.c | 4 --
drivers/video/fbdev/i740fb.c | 40 +++++-------
drivers/video/fbdev/nvidia/nvidia.c | 64 +++++++++++---------
drivers/video/fbdev/s3fb.c | 39 +++++-------
drivers/video/fbdev/savage/savagefb_driver.c | 52 ++++++++++------
drivers/video/fbdev/via/via-core.c | 39 +++++-------
drivers/video/fbdev/vt8623fb.c | 41 ++++++-------
include/linux/via-core.h | 2 -
17 files changed, 267 insertions(+), 256 deletions(-)
Applied to drm-misc-next tree, thanks.
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics