mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
omapfb: dss: Do not duplicate features data
As features data are read only, there is no need to allocate their copy on the heap. Suggested-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Ladislav Michl <ladis@linux-mips.org> Tested-by: Adam Ford <aford173@gmail.com> #omap3630 Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: Arvind Yadav <arvind.yadav.cs@gmail.com> Cc: Markus Elfring <elfring@users.sourceforge.net> Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc: Adam Ford <adam.ford@logicpd.com> [b.zolnierkie: fixed minor CodingStyle errors reported by checkpatch.pl] Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
This commit is contained in:
parent
1c72004c89
commit
ee334e0047
3 changed files with 29 additions and 86 deletions
|
@ -3976,52 +3976,33 @@ static const struct dispc_features omap54xx_dispc_feats = {
|
||||||
.has_writeback = true,
|
.has_writeback = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int dispc_init_features(struct platform_device *pdev)
|
static const struct dispc_features *dispc_get_features(void)
|
||||||
{
|
{
|
||||||
const struct dispc_features *src;
|
|
||||||
struct dispc_features *dst;
|
|
||||||
|
|
||||||
dst = devm_kzalloc(&pdev->dev, sizeof(*dst), GFP_KERNEL);
|
|
||||||
if (!dst) {
|
|
||||||
dev_err(&pdev->dev, "Failed to allocate DISPC Features\n");
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (omapdss_get_version()) {
|
switch (omapdss_get_version()) {
|
||||||
case OMAPDSS_VER_OMAP24xx:
|
case OMAPDSS_VER_OMAP24xx:
|
||||||
src = &omap24xx_dispc_feats;
|
return &omap24xx_dispc_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP34xx_ES1:
|
case OMAPDSS_VER_OMAP34xx_ES1:
|
||||||
src = &omap34xx_rev1_0_dispc_feats;
|
return &omap34xx_rev1_0_dispc_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP34xx_ES3:
|
case OMAPDSS_VER_OMAP34xx_ES3:
|
||||||
case OMAPDSS_VER_OMAP3630:
|
case OMAPDSS_VER_OMAP3630:
|
||||||
case OMAPDSS_VER_AM35xx:
|
case OMAPDSS_VER_AM35xx:
|
||||||
case OMAPDSS_VER_AM43xx:
|
case OMAPDSS_VER_AM43xx:
|
||||||
src = &omap34xx_rev3_0_dispc_feats;
|
return &omap34xx_rev3_0_dispc_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP4430_ES1:
|
case OMAPDSS_VER_OMAP4430_ES1:
|
||||||
case OMAPDSS_VER_OMAP4430_ES2:
|
case OMAPDSS_VER_OMAP4430_ES2:
|
||||||
case OMAPDSS_VER_OMAP4:
|
case OMAPDSS_VER_OMAP4:
|
||||||
src = &omap44xx_dispc_feats;
|
return &omap44xx_dispc_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP5:
|
case OMAPDSS_VER_OMAP5:
|
||||||
case OMAPDSS_VER_DRA7xx:
|
case OMAPDSS_VER_DRA7xx:
|
||||||
src = &omap54xx_dispc_feats;
|
return &omap54xx_dispc_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -ENODEV;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(dst, src, sizeof(*dst));
|
|
||||||
dispc.feat = dst;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static irqreturn_t dispc_irq_handler(int irq, void *arg)
|
static irqreturn_t dispc_irq_handler(int irq, void *arg)
|
||||||
|
@ -4078,9 +4059,9 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)
|
||||||
|
|
||||||
spin_lock_init(&dispc.control_lock);
|
spin_lock_init(&dispc.control_lock);
|
||||||
|
|
||||||
r = dispc_init_features(dispc.pdev);
|
dispc.feat = dispc_get_features();
|
||||||
if (r)
|
if (!dispc.feat)
|
||||||
return r;
|
return -ENODEV;
|
||||||
|
|
||||||
dispc_mem = platform_get_resource(dispc.pdev, IORESOURCE_MEM, 0);
|
dispc_mem = platform_get_resource(dispc.pdev, IORESOURCE_MEM, 0);
|
||||||
if (!dispc_mem) {
|
if (!dispc_mem) {
|
||||||
|
|
|
@ -887,58 +887,37 @@ static const struct dss_features dra7xx_dss_feats = {
|
||||||
.num_ports = ARRAY_SIZE(dra7xx_ports),
|
.num_ports = ARRAY_SIZE(dra7xx_ports),
|
||||||
};
|
};
|
||||||
|
|
||||||
static int dss_init_features(struct platform_device *pdev)
|
static const struct dss_features *dss_get_features(void)
|
||||||
{
|
{
|
||||||
const struct dss_features *src;
|
|
||||||
struct dss_features *dst;
|
|
||||||
|
|
||||||
dst = devm_kzalloc(&pdev->dev, sizeof(*dst), GFP_KERNEL);
|
|
||||||
if (!dst) {
|
|
||||||
dev_err(&pdev->dev, "Failed to allocate local DSS Features\n");
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (omapdss_get_version()) {
|
switch (omapdss_get_version()) {
|
||||||
case OMAPDSS_VER_OMAP24xx:
|
case OMAPDSS_VER_OMAP24xx:
|
||||||
src = &omap24xx_dss_feats;
|
return &omap24xx_dss_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP34xx_ES1:
|
case OMAPDSS_VER_OMAP34xx_ES1:
|
||||||
case OMAPDSS_VER_OMAP34xx_ES3:
|
case OMAPDSS_VER_OMAP34xx_ES3:
|
||||||
case OMAPDSS_VER_AM35xx:
|
case OMAPDSS_VER_AM35xx:
|
||||||
src = &omap34xx_dss_feats;
|
return &omap34xx_dss_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP3630:
|
case OMAPDSS_VER_OMAP3630:
|
||||||
src = &omap3630_dss_feats;
|
return &omap3630_dss_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP4430_ES1:
|
case OMAPDSS_VER_OMAP4430_ES1:
|
||||||
case OMAPDSS_VER_OMAP4430_ES2:
|
case OMAPDSS_VER_OMAP4430_ES2:
|
||||||
case OMAPDSS_VER_OMAP4:
|
case OMAPDSS_VER_OMAP4:
|
||||||
src = &omap44xx_dss_feats;
|
return &omap44xx_dss_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP5:
|
case OMAPDSS_VER_OMAP5:
|
||||||
src = &omap54xx_dss_feats;
|
return &omap54xx_dss_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_AM43xx:
|
case OMAPDSS_VER_AM43xx:
|
||||||
src = &am43xx_dss_feats;
|
return &am43xx_dss_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_DRA7xx:
|
case OMAPDSS_VER_DRA7xx:
|
||||||
src = &dra7xx_dss_feats;
|
return &dra7xx_dss_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -ENODEV;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(dst, src, sizeof(*dst));
|
|
||||||
dss.feat = dst;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dss_uninit_ports(struct platform_device *pdev);
|
static void dss_uninit_ports(struct platform_device *pdev);
|
||||||
|
@ -1104,9 +1083,9 @@ static int dss_bind(struct device *dev)
|
||||||
|
|
||||||
dss.pdev = pdev;
|
dss.pdev = pdev;
|
||||||
|
|
||||||
r = dss_init_features(dss.pdev);
|
dss.feat = dss_get_features();
|
||||||
if (r)
|
if (!dss.feat)
|
||||||
return r;
|
return -ENODEV;
|
||||||
|
|
||||||
dss_mem = platform_get_resource(dss.pdev, IORESOURCE_MEM, 0);
|
dss_mem = platform_get_resource(dss.pdev, IORESOURCE_MEM, 0);
|
||||||
if (!dss_mem) {
|
if (!dss_mem) {
|
||||||
|
|
|
@ -189,47 +189,30 @@ static const struct hdmi_phy_features omap54xx_phy_feats = {
|
||||||
.max_phy = 186000000,
|
.max_phy = 186000000,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int hdmi_phy_init_features(struct platform_device *pdev)
|
static const struct hdmi_phy_features *hdmi_phy_get_features(void)
|
||||||
{
|
{
|
||||||
struct hdmi_phy_features *dst;
|
|
||||||
const struct hdmi_phy_features *src;
|
|
||||||
|
|
||||||
dst = devm_kzalloc(&pdev->dev, sizeof(*dst), GFP_KERNEL);
|
|
||||||
if (!dst) {
|
|
||||||
dev_err(&pdev->dev, "Failed to allocate HDMI PHY Features\n");
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (omapdss_get_version()) {
|
switch (omapdss_get_version()) {
|
||||||
case OMAPDSS_VER_OMAP4430_ES1:
|
case OMAPDSS_VER_OMAP4430_ES1:
|
||||||
case OMAPDSS_VER_OMAP4430_ES2:
|
case OMAPDSS_VER_OMAP4430_ES2:
|
||||||
case OMAPDSS_VER_OMAP4:
|
case OMAPDSS_VER_OMAP4:
|
||||||
src = &omap44xx_phy_feats;
|
return &omap44xx_phy_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
case OMAPDSS_VER_OMAP5:
|
case OMAPDSS_VER_OMAP5:
|
||||||
case OMAPDSS_VER_DRA7xx:
|
case OMAPDSS_VER_DRA7xx:
|
||||||
src = &omap54xx_phy_feats;
|
return &omap54xx_phy_feats;
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -ENODEV;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(dst, src, sizeof(*dst));
|
|
||||||
phy_feat = dst;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int hdmi_phy_init(struct platform_device *pdev, struct hdmi_phy_data *phy)
|
int hdmi_phy_init(struct platform_device *pdev, struct hdmi_phy_data *phy)
|
||||||
{
|
{
|
||||||
int r;
|
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
|
|
||||||
r = hdmi_phy_init_features(pdev);
|
phy_feat = hdmi_phy_get_features();
|
||||||
if (r)
|
if (!phy_feat)
|
||||||
return r;
|
return -ENODEV;
|
||||||
|
|
||||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phy");
|
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phy");
|
||||||
if (!res) {
|
if (!res) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue