mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
ARM: OMAP2+: omap_device: remove obsolete pm_lats and early_device code
Remove now-obsolete code from arch/arm/mach-omap2/omap_device.c. This mostly consists of removing the first attempt at device PM latency handling. This was never really used, has been replaced by the common dev_pm_qos code, and needs to go away as part of the DT conversion. Also, the early platform_device creation code has been removed, as it appears to be unused. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
@@ -63,7 +63,7 @@ static int __init omap_davinci_emac_dev_init(struct omap_hwmod *oh,
|
||||
struct platform_device *pdev;
|
||||
|
||||
pdev = omap_device_build(oh->class->name, 0, oh, pdata, pdata_len,
|
||||
NULL, 0, false);
|
||||
false);
|
||||
if (IS_ERR(pdev)) {
|
||||
WARN(1, "Can't build omap_device for %s:%s.\n",
|
||||
oh->class->name, oh->name);
|
||||
|
||||
@@ -61,8 +61,7 @@ static int __init omap3_l3_init(void)
|
||||
if (!oh)
|
||||
pr_err("could not look up %s\n", oh_name);
|
||||
|
||||
pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0,
|
||||
NULL, 0, 0);
|
||||
pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0);
|
||||
|
||||
WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
|
||||
|
||||
@@ -96,8 +95,7 @@ static int __init omap4_l3_init(void)
|
||||
pr_err("could not look up %s\n", oh_name);
|
||||
}
|
||||
|
||||
pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL,
|
||||
0, NULL, 0, 0);
|
||||
pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, 0);
|
||||
|
||||
WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
|
||||
|
||||
@@ -273,7 +271,7 @@ int __init omap4_keyboard_init(struct omap4_keypad_platform_data
|
||||
keypad_data = sdp4430_keypad_data;
|
||||
|
||||
pdev = omap_device_build(name, id, oh, keypad_data,
|
||||
sizeof(struct omap4_keypad_platform_data), NULL, 0, 0);
|
||||
sizeof(struct omap4_keypad_platform_data));
|
||||
|
||||
if (IS_ERR(pdev)) {
|
||||
WARN(1, "Can't build omap_device for %s:%s.\n",
|
||||
@@ -297,7 +295,7 @@ static inline void __init omap_init_mbox(void)
|
||||
return;
|
||||
}
|
||||
|
||||
pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0, NULL, 0, 0);
|
||||
pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0);
|
||||
WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n",
|
||||
__func__, PTR_ERR(pdev));
|
||||
}
|
||||
@@ -337,7 +335,7 @@ static void __init omap_init_mcpdm(void)
|
||||
return;
|
||||
}
|
||||
|
||||
pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0, NULL, 0, 0);
|
||||
pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0);
|
||||
WARN(IS_ERR(pdev), "Can't build omap_device for omap-mcpdm.\n");
|
||||
}
|
||||
#else
|
||||
@@ -358,7 +356,7 @@ static void __init omap_init_dmic(void)
|
||||
return;
|
||||
}
|
||||
|
||||
pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0, NULL, 0, 0);
|
||||
pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0);
|
||||
WARN(IS_ERR(pdev), "Can't build omap_device for omap-dmic.\n");
|
||||
}
|
||||
#else
|
||||
@@ -384,8 +382,7 @@ static void __init omap_init_hdmi_audio(void)
|
||||
return;
|
||||
}
|
||||
|
||||
pdev = omap_device_build("omap-hdmi-audio-dai",
|
||||
-1, oh, NULL, 0, NULL, 0, 0);
|
||||
pdev = omap_device_build("omap-hdmi-audio-dai", -1, oh, NULL, 0, 0);
|
||||
WARN(IS_ERR(pdev),
|
||||
"Can't build omap_device for omap-hdmi-audio-dai.\n");
|
||||
|
||||
@@ -429,8 +426,7 @@ static int __init omap_mcspi_init(struct omap_hwmod *oh, void *unused)
|
||||
}
|
||||
|
||||
spi_num++;
|
||||
pdev = omap_device_build(name, spi_num, oh, pdata,
|
||||
sizeof(*pdata), NULL, 0, 0);
|
||||
pdev = omap_device_build(name, spi_num, oh, pdata, sizeof(*pdata));
|
||||
WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s\n",
|
||||
name, oh->name);
|
||||
kfree(pdata);
|
||||
@@ -460,7 +456,7 @@ static void omap_init_rng(void)
|
||||
if (!oh)
|
||||
return;
|
||||
|
||||
pdev = omap_device_build("omap_rng", -1, oh, NULL, 0, NULL, 0, 0);
|
||||
pdev = omap_device_build("omap_rng", -1, oh, NULL, 0);
|
||||
WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n");
|
||||
}
|
||||
|
||||
@@ -689,8 +685,7 @@ static void __init omap_init_ocp2scp(void)
|
||||
|
||||
pdata->dev_cnt = dev_cnt;
|
||||
|
||||
pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata), NULL,
|
||||
0, false);
|
||||
pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata));
|
||||
if (IS_ERR(pdev)) {
|
||||
pr_err("Could not build omap_device for %s %s\n",
|
||||
name, oh_name);
|
||||
|
||||
@@ -226,7 +226,7 @@ static struct platform_device *create_dss_pdev(const char *pdev_name,
|
||||
dev_set_name(&pdev->dev, "%s", pdev->name);
|
||||
|
||||
ohs[0] = oh;
|
||||
od = omap_device_alloc(pdev, ohs, 1, NULL, 0);
|
||||
od = omap_device_alloc(pdev, ohs, 1);
|
||||
if (IS_ERR(od)) {
|
||||
pr_err("Could not alloc omap_device for %s\n", pdev_name);
|
||||
r = -ENOMEM;
|
||||
|
||||
@@ -248,7 +248,7 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused)
|
||||
|
||||
p->errata = configure_dma_errata();
|
||||
|
||||
pdev = omap_device_build(name, 0, oh, p, sizeof(*p), NULL, 0, 0);
|
||||
pdev = omap_device_build(name, 0, oh, p, sizeof(*p));
|
||||
kfree(p);
|
||||
if (IS_ERR(pdev)) {
|
||||
pr_err("%s: Can't build omap_device for %s:%s.\n",
|
||||
|
||||
@@ -51,8 +51,7 @@ static int __init omap_init_drm(void)
|
||||
oh = omap_hwmod_lookup("dmm");
|
||||
|
||||
if (oh) {
|
||||
pdev = omap_device_build(oh->name, -1, oh, NULL, 0, NULL, 0,
|
||||
false);
|
||||
pdev = omap_device_build(oh->name, -1, oh, NULL, 0);
|
||||
WARN(IS_ERR(pdev), "Could not build omap_device for %s\n",
|
||||
oh->name);
|
||||
}
|
||||
|
||||
@@ -131,8 +131,7 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
|
||||
pwrdm = omap_hwmod_get_pwrdm(oh);
|
||||
pdata->loses_context = pwrdm_can_ever_lose_context(pwrdm);
|
||||
|
||||
pdev = omap_device_build(name, id - 1, oh, pdata,
|
||||
sizeof(*pdata), NULL, 0, false);
|
||||
pdev = omap_device_build(name, id - 1, oh, pdata, sizeof(*pdata));
|
||||
kfree(pdata);
|
||||
|
||||
if (IS_ERR(pdev)) {
|
||||
|
||||
@@ -1220,7 +1220,7 @@ static int __init omap_gpmc_init(void)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
pdev = omap_device_build(DEVICE_NAME, -1, oh, NULL, 0, NULL, 0, 0);
|
||||
pdev = omap_device_build(DEVICE_NAME, -1, oh, NULL, 0);
|
||||
WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
|
||||
|
||||
return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
|
||||
|
||||
@@ -87,7 +87,7 @@ static int __init omap_init_hdq(void)
|
||||
if (!oh)
|
||||
return 0;
|
||||
|
||||
pdev = omap_device_build(devname, id, oh, NULL, 0, NULL, 0, 0);
|
||||
pdev = omap_device_build(devname, id, oh, NULL, 0);
|
||||
WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n",
|
||||
devname, oh->name);
|
||||
|
||||
|
||||
@@ -522,7 +522,7 @@ static void __init omap_hsmmc_init_one(struct omap2_hsmmc_info *hsmmcinfo,
|
||||
}
|
||||
dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id);
|
||||
|
||||
od = omap_device_alloc(pdev, ohs, 1, NULL, 0);
|
||||
od = omap_device_alloc(pdev, ohs, 1);
|
||||
if (IS_ERR(od)) {
|
||||
pr_err("Could not allocate od for %s\n", name);
|
||||
goto put_pdev;
|
||||
|
||||
@@ -46,8 +46,7 @@ static int __init hwspinlocks_init(void)
|
||||
return -EINVAL;
|
||||
|
||||
pdev = omap_device_build(dev_name, 0, oh, &omap_hwspinlock_pdata,
|
||||
sizeof(struct hwspinlock_pdata),
|
||||
NULL, 0, false);
|
||||
sizeof(struct hwspinlock_pdata));
|
||||
if (IS_ERR(pdev)) {
|
||||
pr_err("Can't build omap_device for %s:%s\n", dev_name,
|
||||
oh_name);
|
||||
|
||||
@@ -178,8 +178,7 @@ int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *i2c_pdata,
|
||||
if (cpu_is_omap34xx())
|
||||
pdata->set_mpu_wkup_lat = omap_pm_set_max_mpu_wakeup_lat_compat;
|
||||
pdev = omap_device_build(name, bus_id, oh, pdata,
|
||||
sizeof(struct omap_i2c_bus_platform_data),
|
||||
NULL, 0, 0);
|
||||
sizeof(struct omap_i2c_bus_platform_data));
|
||||
WARN(IS_ERR(pdev), "Could not build omap_device for %s\n", name);
|
||||
|
||||
return PTR_RET(pdev);
|
||||
|
||||
@@ -101,7 +101,7 @@ static int __init omap_init_mcbsp(struct omap_hwmod *oh, void *unused)
|
||||
count++;
|
||||
}
|
||||
pdev = omap_device_build_ss(name, id, oh_device, count, pdata,
|
||||
sizeof(*pdata), NULL, 0, false);
|
||||
sizeof(*pdata));
|
||||
kfree(pdata);
|
||||
if (IS_ERR(pdev)) {
|
||||
pr_err("%s: Can't build omap_device for %s:%s.\n", __func__,
|
||||
|
||||
@@ -150,7 +150,7 @@ void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data)
|
||||
return;
|
||||
}
|
||||
pdev = omap_device_build(dev_name, id, oh, mmc_data[0],
|
||||
sizeof(struct omap_mmc_platform_data), NULL, 0, 0);
|
||||
sizeof(struct omap_mmc_platform_data));
|
||||
if (IS_ERR(pdev))
|
||||
WARN(1, "Can'd build omap_device for %s:%s.\n",
|
||||
dev_name, oh->name);
|
||||
|
||||
@@ -41,8 +41,7 @@ static int __init omap_iommu_dev_init(struct omap_hwmod *oh, void *unused)
|
||||
pdata->deassert_reset = omap_device_deassert_hardreset;
|
||||
}
|
||||
|
||||
pdev = omap_device_build("omap-iommu", i, oh, pdata, sizeof(*pdata),
|
||||
NULL, 0, 0);
|
||||
pdev = omap_device_build("omap-iommu", i, oh, pdata, sizeof(*pdata));
|
||||
|
||||
kfree(pdata);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,20 +13,12 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* Eventually this type of functionality should either be
|
||||
* a) implemented via arch-specific pointers in platform_device
|
||||
* or
|
||||
* b) implemented as a proper omap_bus/omap_device in Linux, no more
|
||||
* platform_device
|
||||
* This type of functionality should be implemented as a proper
|
||||
* omap_bus/omap_device in Linux.
|
||||
*
|
||||
* omap_device differs from omap_hwmod in that it includes external
|
||||
* (e.g., board- and system-level) integration details. omap_hwmod
|
||||
* stores hardware data that is invariant for a given OMAP chip.
|
||||
*
|
||||
* To do:
|
||||
* - GPIO integration
|
||||
* - regulator integration
|
||||
*
|
||||
*/
|
||||
#ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_DEVICE_H
|
||||
#define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_DEVICE_H
|
||||
@@ -45,19 +37,14 @@ extern struct dev_pm_domain omap_device_pm_domain;
|
||||
#define OMAP_DEVICE_STATE_SHUTDOWN 3
|
||||
|
||||
/* omap_device.flags values */
|
||||
#define OMAP_DEVICE_SUSPENDED BIT(0)
|
||||
#define OMAP_DEVICE_NO_IDLE_ON_SUSPEND BIT(1)
|
||||
#define OMAP_DEVICE_SUSPENDED BIT(0)
|
||||
#define OMAP_DEVICE_NO_IDLE_ON_SUSPEND BIT(1)
|
||||
|
||||
/**
|
||||
* struct omap_device - omap_device wrapper for platform_devices
|
||||
* @pdev: platform_device
|
||||
* @hwmods: (one .. many per omap_device)
|
||||
* @hwmods_cnt: ARRAY_SIZE() of @hwmods
|
||||
* @pm_lats: ptr to an omap_device_pm_latency table
|
||||
* @pm_lats_cnt: ARRAY_SIZE() of what is passed to @pm_lats
|
||||
* @pm_lat_level: array index of the last odpl entry executed - -1 if never
|
||||
* @dev_wakeup_lat: dev wakeup latency in nanoseconds
|
||||
* @_dev_wakeup_lat_limit: dev wakeup latency limit in nsec - set by OMAP PM
|
||||
* @_state: one of OMAP_DEVICE_STATE_* (see above)
|
||||
* @flags: device flags
|
||||
* @_driver_status: one of BUS_NOTIFY_*_DRIVER from <linux/device.h>
|
||||
@@ -71,12 +58,7 @@ extern struct dev_pm_domain omap_device_pm_domain;
|
||||
struct omap_device {
|
||||
struct platform_device *pdev;
|
||||
struct omap_hwmod **hwmods;
|
||||
struct omap_device_pm_latency *pm_lats;
|
||||
u32 dev_wakeup_lat;
|
||||
u32 _dev_wakeup_lat_limit;
|
||||
unsigned long _driver_status;
|
||||
u8 pm_lats_cnt;
|
||||
s8 pm_lat_level;
|
||||
u8 hwmods_cnt;
|
||||
u8 _state;
|
||||
u8 flags;
|
||||
@@ -86,36 +68,25 @@ struct omap_device {
|
||||
|
||||
int omap_device_enable(struct platform_device *pdev);
|
||||
int omap_device_idle(struct platform_device *pdev);
|
||||
int omap_device_shutdown(struct platform_device *pdev);
|
||||
|
||||
/* Core code interface */
|
||||
|
||||
struct platform_device *omap_device_build(const char *pdev_name, int pdev_id,
|
||||
struct omap_hwmod *oh, void *pdata,
|
||||
int pdata_len,
|
||||
struct omap_device_pm_latency *pm_lats,
|
||||
int pm_lats_cnt, int is_early_device);
|
||||
struct omap_hwmod *oh, void *pdata,
|
||||
int pdata_len);
|
||||
|
||||
struct platform_device *omap_device_build_ss(const char *pdev_name, int pdev_id,
|
||||
struct omap_hwmod **oh, int oh_cnt,
|
||||
void *pdata, int pdata_len,
|
||||
struct omap_device_pm_latency *pm_lats,
|
||||
int pm_lats_cnt, int is_early_device);
|
||||
void *pdata, int pdata_len);
|
||||
|
||||
struct omap_device *omap_device_alloc(struct platform_device *pdev,
|
||||
struct omap_hwmod **ohs, int oh_cnt,
|
||||
struct omap_device_pm_latency *pm_lats,
|
||||
int pm_lats_cnt);
|
||||
struct omap_hwmod **ohs, int oh_cnt);
|
||||
void omap_device_delete(struct omap_device *od);
|
||||
int omap_device_register(struct platform_device *pdev);
|
||||
|
||||
void __iomem *omap_device_get_rt_va(struct omap_device *od);
|
||||
struct device *omap_device_get_by_hwmod_name(const char *oh_name);
|
||||
|
||||
/* OMAP PM interface */
|
||||
int omap_device_align_pm_lat(struct platform_device *pdev,
|
||||
u32 new_wakeup_lat_limit);
|
||||
struct powerdomain *omap_device_get_pwrdm(struct omap_device *od);
|
||||
int omap_device_get_context_loss_count(struct platform_device *pdev);
|
||||
|
||||
/* Other */
|
||||
@@ -124,40 +95,6 @@ int omap_device_assert_hardreset(struct platform_device *pdev,
|
||||
const char *name);
|
||||
int omap_device_deassert_hardreset(struct platform_device *pdev,
|
||||
const char *name);
|
||||
int omap_device_idle_hwmods(struct omap_device *od);
|
||||
int omap_device_enable_hwmods(struct omap_device *od);
|
||||
|
||||
int omap_device_disable_clocks(struct omap_device *od);
|
||||
int omap_device_enable_clocks(struct omap_device *od);
|
||||
|
||||
/*
|
||||
* Entries should be kept in latency order ascending
|
||||
*
|
||||
* deact_lat is the maximum number of microseconds required to complete
|
||||
* deactivate_func() at the device's slowest OPP.
|
||||
*
|
||||
* act_lat is the maximum number of microseconds required to complete
|
||||
* activate_func() at the device's slowest OPP.
|
||||
*
|
||||
* This will result in some suboptimal power management decisions at fast
|
||||
* OPPs, but avoids having to recompute all device power management decisions
|
||||
* if the system shifts from a fast OPP to a slow OPP (in order to meet
|
||||
* latency requirements).
|
||||
*
|
||||
* XXX should deactivate_func/activate_func() take platform_device pointers
|
||||
* rather than omap_device pointers?
|
||||
*/
|
||||
struct omap_device_pm_latency {
|
||||
u32 deactivate_lat;
|
||||
u32 deactivate_lat_worst;
|
||||
int (*deactivate_func)(struct omap_device *od);
|
||||
u32 activate_lat;
|
||||
u32 activate_lat_worst;
|
||||
int (*activate_func)(struct omap_device *od);
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
#define OMAP_DEVICE_LATENCY_AUTO_ADJUST BIT(1)
|
||||
|
||||
/* Get omap_device pointer from platform_device pointer */
|
||||
static inline struct omap_device *to_omap_device(struct platform_device *pdev)
|
||||
|
||||
@@ -32,8 +32,6 @@
|
||||
#include "pm.h"
|
||||
#include "twl-common.h"
|
||||
|
||||
static struct omap_device_pm_latency *pm_lats;
|
||||
|
||||
/*
|
||||
* omap_pm_suspend: points to a function that does the SoC-specific
|
||||
* suspend work
|
||||
@@ -82,7 +80,7 @@ static int __init _init_omap_device(char *name)
|
||||
__func__, name))
|
||||
return -ENODEV;
|
||||
|
||||
pdev = omap_device_build(oh->name, 0, oh, NULL, 0, pm_lats, 0, false);
|
||||
pdev = omap_device_build(oh->name, 0, oh, NULL, 0);
|
||||
if (WARN(IS_ERR(pdev), "%s: could not build omap_device for %s\n",
|
||||
__func__, name))
|
||||
return -ENODEV;
|
||||
|
||||
@@ -48,8 +48,7 @@ static int __init omap2_init_pmu(unsigned oh_num, char *oh_names[])
|
||||
}
|
||||
}
|
||||
|
||||
omap_pmu_dev = omap_device_build_ss(dev_name, -1, oh, oh_num, NULL, 0,
|
||||
NULL, 0, 0);
|
||||
omap_pmu_dev = omap_device_build_ss(dev_name, -1, oh, oh_num, NULL, 0);
|
||||
WARN(IS_ERR(omap_pmu_dev), "Can't build omap_device for %s.\n",
|
||||
dev_name);
|
||||
|
||||
|
||||
@@ -316,8 +316,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata,
|
||||
if (WARN_ON(!oh))
|
||||
return;
|
||||
|
||||
pdev = omap_device_build(name, uart->num, oh, pdata, pdata_size,
|
||||
NULL, 0, false);
|
||||
pdev = omap_device_build(name, uart->num, oh, pdata, pdata_size);
|
||||
if (IS_ERR(pdev)) {
|
||||
WARN(1, "Could not build omap_device for %s: %s.\n", name,
|
||||
oh->name);
|
||||
|
||||
@@ -152,8 +152,7 @@ static int __init sr_dev_init(struct omap_hwmod *oh, void *user)
|
||||
|
||||
sr_data->enable_on_init = sr_enable_on_init;
|
||||
|
||||
pdev = omap_device_build(name, i, oh, sr_data, sizeof(*sr_data),
|
||||
NULL, 0, 0);
|
||||
pdev = omap_device_build(name, i, oh, sr_data, sizeof(*sr_data), 0);
|
||||
if (IS_ERR(pdev))
|
||||
pr_warning("%s: Could not build omap_device for %s: %s.\n\n",
|
||||
__func__, name, oh->name);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user