These patches are for separating the SOC On-Chip ohci host controller
from ohci-hcd host code into its own driver module.
This work is part of enabling multi-platform kernels on ARM;
it would be nice to have in 3.12.
V2:
In patch 5/6 and 6/6:
-Set non-standard fields in hc_driver manually, rather than
relying on an expanded struct ohci_driver_overrides.
-Save orig_ohci_hub_control and orig_ohci_hub_status_data rather than
relying on ohci_hub_control and hub_status_data being exported.
In patch 1/6 to 4/6
-ohci_setup() has been removed because it is called in .reset member
of the ohci_hc_driver structure.
V3:
In patch 5/6 and 6/6:
-ohci_setup() has been removed because it is called in .reset member
of the ohci_hc_driver structure.
In patch 5/6:
-The ohci_restart() function is not required in current scenario,
only discarding connection state of integrated transceivers is sufficient,
for this directly handling ohci->hc_control.
In patch 2/6 :
-rewritten if (config->otg || config->rwc) block statements into
two separate 'if blocks' to handle below scenarios
1. config->otg set scenario.
2. if any of these (config->otg, config->rwc) are set, this
scenario should be handled only after ohci_setup()
In patch 1/6 and 4/6:
No change.
V4:
In patch 1/6 and 4/6:
No change.
In patch 2/6 :
-usb_remove_hcd() function is required a valid clock that is what
omap_ohci_clock_power(0) is called after hcd shutdown.
In patch 3/6 :
-V3 modification revert back, only ohci->regs setting write()
function has been removed because ohci->regs doesn't get set until
usb_add_hcd.
In patch 5/6 :
- Removed extra space after "tristate".
- Removed extra space between function name and '(' characters.
- MODULE_ALIAS line moved to last statement of ohci-at91 file.
In patch 6/6 :
- Removed extra space before the '='.
- Moved /* forward definitions */ line before the declarations of functions.
V5:
In patch 1/6 to 5/6
- No change.
In patch 6/6:
- String "s3cxxxx" is replaced by "s3c2410".
Manjunath Goudar (6):
USB: OHCI: make ohci-exynos a separate driver
USB: OHCI: make ohci-omap a separate driver
USB: OHCI: make ohci-omap3 a separate driver
USB: OHCI: make ohci-spear a separate driver
USB: OHCI: make ohci-at91 a separate driver
USB: OHCI: make ohci-s3c2410 a separate driver
drivers/usb/host/Kconfig | 30 ++++++-
drivers/usb/host/Makefile | 6 ++
drivers/usb/host/ohci-at91.c | 153 ++++++++++++++++-------------------
drivers/usb/host/ohci-exynos.c | 167 ++++++++++++++++-----------------------
drivers/usb/host/ohci-hcd.c | 108 -------------------------
drivers/usb/host/ohci-omap.c | 156 +++++++++++++-----------------------
drivers/usb/host/ohci-omap3.c | 118 +++++++++------------------
drivers/usb/host/ohci-s3c2410.c | 128 +++++++++++++-----------------
drivers/usb/host/ohci-spear.c | 140 +++++++++++++-------------------
9 files changed, 374 insertions(+), 632 deletions(-)
--
1.7.9.5
Currently prototype of cpufreq_drivers target routines is:
int target(struct cpufreq_policy *policy, unsigned int target_freq,
unsigned int relation);
And most of the drivers call cpufreq_frequency_table_target() to get a valid
index of their frequency table which is closest to the target_freq. And they
don't use target_freq and relation after it.
So, it makes sense to just do this work in cpufreq core before calling
cpufreq_frequency_table_target() and simply pass index instead. But this can be
done only with drivers which expose their frequency table with cpufreq core. For
others we need to stick with the old prototype of target() until those drivers
are converted to expose frequency tables.
So, in order not to break those special drivers first patch renames ->target() to
->target_old() and the following patches will define the new prototype and
convert existing drivers one by one.
There are 12 drivers after this patchset which still use the heavy weight
version, i.e. target_old() and 39 drivers have adopted this new approach.
Once those 12 drivers are also moved to use .target(), .target_old() will be
removed completely.
This is part 3 of my generic cpufreq cleanup stuff.. First two are posted here
and this one is rebased of them:
1: cpufreq: Introduce cpufreq_table_validate_and_show()
https://lkml.org/lkml/2013/8/8/263
2: cpufreq: define generic routines for cpufreq drivers
https://lkml.org/lkml/2013/8/10/48
After this patchset this is the diffstat for 107 patches:
54 files changed, 357 insertions(+), 1411 deletions(-)
All these are pushed here:
https://git.linaro.org/gitweb?p=people/vireshk/linux.git;a=shortlog;h=refs/…
--
viresh
Cc: Andrew Lunn <andrew(a)lunn.ch>
Cc: David S. Miller <davem(a)davemloft.net>
Cc: Dmitry Eremin-Solenikov <dbaryshkov(a)gmail.com>
Cc: Eric Miao <eric.y.miao(a)gmail.com>
Cc: Jesper Nilsson <jesper.nilsson(a)axis.com>
Cc: John Crispin <blogic(a)openwrt.org>
Cc: Kukjin Kim <kgene.kim(a)samsung.com>
Cc: Linus Walleij <linus.walleij(a)linaro.org>
Cc: linux-cris-kernel(a)axis.com
Cc: Mikael Starvik <starvik(a)axis.com>
Cc: Santosh Shilimkar <santosh.shilimkar(a)ti.com>
Cc: Sekhar Nori <nsekhar(a)ti.com>
Cc: Shawn Guo <shawn.guo(a)linaro.org>
Cc: sparclinux(a)vger.kernel.org
Cc: Stephen Warren <swarren(a)nvidia.com>
Cc: Steven Miao <realmz6(a)gmail.com>
Cc: Tony Luck <tony.luck(a)intel.com>
Viresh Kumar (31):
cpufreq: rename ->target() as ->target_old()
cpufreq: Implement light weight ->target() routine
cpufreq: acpi: Covert to light weight ->target() routine
cpufreq: arm_big_little: Covert to light weight ->target() routine
cpufreq: blackfin: Covert to light weight ->target() routine
cpufreq: cpu0: Covert to light weight ->target() routine
cpufreq: cris: Covert to light weight ->target() routine
cpufreq: davinci: Covert to light weight ->target() routine
cpufreq: dbx500: Covert to light weight ->target() routine
cpufreq: e_powersaver: Covert to light weight ->target() routine
cpufreq: elanfreq: Covert to light weight ->target() routine
cpufreq: exynos: Covert to light weight ->target() routine
cpufreq: ia64: Covert to light weight ->target() routine
cpufreq: imx6q: Covert to light weight ->target() routine
cpufreq: kirkwood: Covert to light weight ->target() routine
cpufreq: longhaul: Covert to light weight ->target() routine
cpufreq: loongson2: Covert to light weight ->target() routine
cpufreq: maple: Covert to light weight ->target() routine
cpufreq: omap: Covert to light weight ->target() routine
cpufreq: p4: Covert to light weight ->target() routine
cpufreq: pasemi: Covert to light weight ->target() routine
cpufreq: pmac32: Covert to light weight ->target() routine
cpufreq: powernow: Covert to light weight ->target() routine
cpufreq: ppc: Covert to light weight ->target() routine
cpufreq: pxa: Covert to light weight ->target() routine
cpufreq: s3c64xx: Covert to light weight ->target() routine
cpufreq: sc520: Covert to light weight ->target() routine
cpufreq: sparc: Covert to light weight ->target() routine
cpufreq: SPEAr: Covert to light weight ->target() routine
cpufreq: speedstep: Covert to light weight ->target() routine
cpufreq: tegra: Covert to light weight ->target() routine
drivers/cpufreq/acpi-cpufreq.c | 19 +++--------
drivers/cpufreq/arm_big_little.c | 15 +++------
drivers/cpufreq/at32ap-cpufreq.c | 2 +-
drivers/cpufreq/blackfin-cpufreq.c | 15 ++-------
drivers/cpufreq/cpufreq-cpu0.c | 15 +--------
drivers/cpufreq/cpufreq-nforce2.c | 2 +-
drivers/cpufreq/cpufreq.c | 59 ++++++++++++++++++++++++++--------
drivers/cpufreq/cris-artpec3-cpufreq.c | 16 +--------
drivers/cpufreq/cris-etraxfs-cpufreq.c | 15 +--------
drivers/cpufreq/davinci-cpufreq.c | 14 ++------
drivers/cpufreq/dbx500-cpufreq.c | 14 ++------
drivers/cpufreq/e_powersaver.c | 15 ++-------
drivers/cpufreq/elanfreq.c | 32 ++----------------
drivers/cpufreq/exynos-cpufreq.c | 19 ++---------
drivers/cpufreq/exynos5440-cpufreq.c | 11 ++-----
drivers/cpufreq/gx-suspmod.c | 2 +-
drivers/cpufreq/ia64-acpi-cpufreq.c | 19 ++---------
drivers/cpufreq/imx6q-cpufreq.c | 15 +--------
drivers/cpufreq/integrator-cpufreq.c | 2 +-
drivers/cpufreq/kirkwood-cpufreq.c | 17 ++--------
drivers/cpufreq/longhaul.c | 11 +------
drivers/cpufreq/loongson2_cpufreq.c | 19 +++--------
drivers/cpufreq/maple-cpufreq.c | 14 ++------
drivers/cpufreq/omap-cpufreq.c | 29 ++---------------
drivers/cpufreq/p4-clockmod.c | 16 ++-------
drivers/cpufreq/pasemi-cpufreq.c | 10 +-----
drivers/cpufreq/pcc-cpufreq.c | 2 +-
drivers/cpufreq/pmac32-cpufreq.c | 10 ++----
drivers/cpufreq/pmac64-cpufreq.c | 15 ++-------
drivers/cpufreq/powernow-k6.c | 33 +++----------------
drivers/cpufreq/powernow-k7.c | 20 ++----------
drivers/cpufreq/powernow-k8.c | 22 ++++---------
drivers/cpufreq/ppc-corenet-cpufreq.c | 13 ++------
drivers/cpufreq/ppc_cbe_cpufreq.c | 10 +-----
drivers/cpufreq/pxa2xx-cpufreq.c | 11 +------
drivers/cpufreq/pxa3xx-cpufreq.c | 15 ++-------
drivers/cpufreq/s3c2416-cpufreq.c | 2 +-
drivers/cpufreq/s3c24xx-cpufreq.c | 2 +-
drivers/cpufreq/s3c64xx-cpufreq.c | 16 ++-------
drivers/cpufreq/s5pv210-cpufreq.c | 2 +-
drivers/cpufreq/sa1100-cpufreq.c | 2 +-
drivers/cpufreq/sa1110-cpufreq.c | 2 +-
drivers/cpufreq/sc520_freq.c | 17 +---------
drivers/cpufreq/sh-cpufreq.c | 2 +-
drivers/cpufreq/sparc-us2e-cpufreq.c | 19 ++---------
drivers/cpufreq/sparc-us3-cpufreq.c | 21 ++----------
drivers/cpufreq/spear-cpufreq.c | 10 ++----
drivers/cpufreq/speedstep-centrino.c | 24 ++++----------
drivers/cpufreq/speedstep-ich.c | 22 +++----------
drivers/cpufreq/speedstep-smi.c | 18 +++--------
drivers/cpufreq/tegra-cpufreq.c | 10 ++----
drivers/cpufreq/unicore2-cpufreq.c | 2 +-
include/linux/cpufreq.h | 4 ++-
53 files changed, 161 insertions(+), 582 deletions(-)
--
1.7.12.rc2.18.g61b472e
CPUFreq core does following at multiple places:
module_{get|put}(cpufreq_driver->owner)).
This is done to make sure module doesn't get unloaded if it is currently in use.
This will work only if the .owner field of cpufreq driver is initialized with a
valid pointer.
This field wasn't initialized for many cpufreq driver, lets initialize it with
THIS_MODULE.
Rebased over: v3.11-rc3 and pushed here:
https://git.linaro.org/gitweb?p=people/vireshk/linux.git;a=shortlog;h=refs/…
Viresh Kumar (15):
cpufreq: arm_big_little: initialize .owner field with THIS_MODULE
cpufreq: cpufreq-cpu0: initialize .owner field with THIS_MODULE
cpufreq: davinci: initialize .owner field with THIS_MODULE
cpufreq: dbx500: initialize .owner field with THIS_MODULE
cpufreq: exynos: initialize .owner field with THIS_MODULE
cpufreq: imx6q: initialize .owner field with THIS_MODULE
cpufreq: integrator: initialize .owner field with THIS_MODULE
cpufreq: omap: initialize .owner field with THIS_MODULE
cpufreq: pxa: initialize .owner field with THIS_MODULE
cpufreq: s3c24xx: initialize .owner field with THIS_MODULE
cpufreq: s5pv210: initialize .owner field with THIS_MODULE
cpufreq: sa11**: initialize .owner field with THIS_MODULE
cpufreq: SPEAr: initialize .owner field with THIS_MODULE
cpufreq: Tegra: initialize .owner field with THIS_MODULE
cpufreq: Unicore: initialize .owner field with THIS_MODULE
drivers/cpufreq/arm_big_little.c | 1 +
drivers/cpufreq/cpufreq-cpu0.c | 1 +
drivers/cpufreq/davinci-cpufreq.c | 1 +
drivers/cpufreq/dbx500-cpufreq.c | 1 +
drivers/cpufreq/exynos-cpufreq.c | 1 +
drivers/cpufreq/exynos5440-cpufreq.c | 1 +
drivers/cpufreq/imx6q-cpufreq.c | 1 +
drivers/cpufreq/integrator-cpufreq.c | 1 +
drivers/cpufreq/omap-cpufreq.c | 1 +
drivers/cpufreq/pxa2xx-cpufreq.c | 1 +
drivers/cpufreq/pxa3xx-cpufreq.c | 1 +
drivers/cpufreq/s3c24xx-cpufreq.c | 1 +
drivers/cpufreq/s5pv210-cpufreq.c | 1 +
drivers/cpufreq/sa1100-cpufreq.c | 1 +
drivers/cpufreq/sa1110-cpufreq.c | 1 +
drivers/cpufreq/spear-cpufreq.c | 1 +
drivers/cpufreq/tegra-cpufreq.c | 1 +
drivers/cpufreq/unicore2-cpufreq.c | 1 +
18 files changed, 18 insertions(+)
--
1.7.12.rc2.18.g61b472e
Hi Rafael/Russell,
These patches would be part of this patchset finally, sending it separately as I
didn't wanted to send other patches in that series..
https://lkml.org/lkml/2013/8/10/48
(Above series was rebased over https://lkml.org/lkml/2013/8/8/263 and hence this
patchset too)..
These first exposes frequency table and then uses cpufreq generic routines
(which uses exposed table) instead of its own .verify() routine.
Later I will send another patch that would be part of this series:
http://lkml.org/lkml/2013/8/12/406
(I need to send that series again today and so not sending that patch twice,
once here and then in that series)..
All these patches are pushed here with all dependencies:
https://git.linaro.org/gitweb?p=people/vireshk/linux.git;a=shortlog;h=refs/…
Viresh Kumar (3):
cpufreq: sa11x0: Expose frequency table
cpufreq: sa11x0: let cpufreq core initialize struct policy fields
cpufreq: sa11x0: Use generic cpufreq routines
arch/arm/mach-sa1100/generic.c | 65 +++++++++++++---------------------------
arch/arm/mach-sa1100/generic.h | 2 +-
drivers/cpufreq/sa1100-cpufreq.c | 9 +++---
drivers/cpufreq/sa1110-cpufreq.c | 9 +++---
4 files changed, 30 insertions(+), 55 deletions(-)
--
1.7.12.rc2.18.g61b472e