omapfb: dss: Do not duplicate features data
PATCH 1/1 omapfb: dss: Do not duplicate features data
As features data are read only, there is no need to allocate their copy on the heap.
---
Note: This patch is not runtime tested. If you have hardware and can test
it, please do so and eventually add you Tested-by tag. Thank you.
Note2: Marcus, I hope it is okay to add your Suggested-by tag. Please
let me know, if I'm wrong.
drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 39 ++++++--------------- drivers/video/fbdev/omap2/omapfb/dss/dss.c | 45 +++++++------------------ drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c | 31 ++++------------- 3 files changed, 29 insertions(+), 86 deletions(-)
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +10 -29
@@ -3976,52 +3976,33 @@ static const struct dispc_features omap54xx_dispc_feats = { .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 ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dispc_feats; -break ; +return &omap24xx_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES1: - src = &omap34xx_rev1_0_dispc_feats; -break ; +return &omap34xx_rev1_0_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_OMAP3630 :case OMAPDSS_VER_AM35xx:case OMAPDSS_VER_AM43xx: - src = &omap34xx_rev3_0_dispc_feats; -break ; +return &omap34xx_rev3_0_dispc_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dispc_feats; -break ; +return &omap44xx_dispc_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_dispc_feats; -break ; +return &omap54xx_dispc_feats;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)
@@ -4078,9 +4059,9 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)spin_lock_init (&dispc.control_lock); - r =dispc_init_features (dispc.pdev); -if (r) -return r; + dispc.feat =dispc_get_features (); +if (!dispc.feat) +return -ENODEV ; dispc_mem =platform_get_resource (dispc.pdev,IORESOURCE_MEM ,0 );if (!dispc_mem) {
drivers/video/fbdev/omap2/omapfb/dss/dss.c +12 -33
79 lines not on this page · raw message
drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c +7 -24
@@ -189,47 +189,30 @@ static const struct hdmi_phy_features omap54xx_phy_feats = { .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 ()) {case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_phy_feats; -break ; +return &omap44xx_phy_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_phy_feats; -break ; +return &omap54xx_phy_feats;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 r;struct resource *res; - r =hdmi_phy_init_features (pdev); -if (r) -return r; + phy_feat =hdmi_phy_get_features (); +if (!phy_feat) +return -ENODEV ; res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"phy" );if (!res) {
Signature · 1 line
2.15.0
Quoted 8 lines · Ladislav Michl
As features data are read only, there is no need to allocate their copy on the heap.
Signed-off-by Ladislav Michl <[email protected]>Suggested-by Markus Elfring <[email protected]>---
Note: This patch is not runtime tested. If you have hardware and can test
it, please do so and eventually add you Tested-by tag. Thank you.
Unfortunately, this fails to load properly on a Logic PD Torpedo kit (omap3630/DM3730).
[ 0.975097] omapdss_dss 48050000.dss: master bind failed: -517 [ 3.821807] omapdss_dispc 48050400.dispc: Failed to allocate DISPC Features [ 3.829345] omapdss_dss 48050000.dss: failed to bind 48050400.dispc (ops dispc_component_ops): -12 [ 3.842254] omapdss_dss 48050000.dss: master bind failed: -12 [ 3.848724] omapdss_dispc: probe of 48050400.dispc failed with error -12
I also get
[ 12.258056] panel-dpi display: failed to find video source
Quoted 236 lines
Note2: Marcus, I hope it is okay to add your Suggested-by tag. Please
let me know, if I'm wrong.drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 39 ++++++--------------- drivers/video/fbdev/omap2/omapfb/dss/dss.c | 45 +++++++------------------ drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c | 31 ++++------------- 3 files changed, 29 insertions(+), 86 deletions(-)drivers/video/fbdev/omap2/omapfb/dss/dispc.c +10
-29@@ -3976,52 +3976,33 @@ static const struct dispc_features omap54xx_dispc_feats = { .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 ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dispc_feats; -break ; +return &omap24xx_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES1: - src = &omap34xx_rev1_0_dispc_feats; -break ; +return &omap34xx_rev1_0_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_OMAP3630 :case OMAPDSS_VER_AM35xx:case OMAPDSS_VER_AM43xx: - src = &omap34xx_rev3_0_dispc_feats; -break ; +return &omap34xx_rev3_0_dispc_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dispc_feats; -break ; +return &omap44xx_dispc_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_dispc_feats; -break ; +return &omap54xx_dispc_feats;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)@@ -4078,9 +4059,9 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)spin_lock_init (&dispc.control_lock); - r =dispc_init_features (dispc.pdev); -if (r) -return r; + dispc.feat =dispc_get_features (); +if (!dispc.feat) +return -ENODEV ; dispc_mem =platform_get_resource (dispc.pdev,IORESOURCE_MEM ,0 );if (!dispc_mem) {drivers/video/fbdev/omap2/omapfb/dss/dss.c +12
-33@@ -887,58 +887,37 @@ static const struct dss_features dra7xx_dss_feats = { .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 ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dss_feats; -break ; +return &omap24xx_dss_feats;case OMAPDSS_VER_OMAP34xx_ES1:case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_AM35xx: - src = &omap34xx_dss_feats; -break ; +return &omap34xx_dss_feats;case OMAPDSS_VER_OMAP3630 : - src = &omap3630_dss_feats; -break ; +return &omap3630_dss_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dss_feats; -break ; +return &omap44xx_dss_feats;case OMAPDSS_VER_OMAP5 : - src = &omap54xx_dss_feats; -break ; +return &omap54xx_dss_feats;case OMAPDSS_VER_AM43xx: - src = &am43xx_dss_feats; -break ; +return &am43xx_dss_feats;case OMAPDSS_VER_DRA7xx: - src = &dra7xx_dss_feats; -break ; +return &dra7xx_dss_feats;default : -return -ENODEV ; +return NULL ; } - -memcpy (dst, src,sizeof (*dst)); - dss.feat = dst; - -return 0 ; }static void dss_uninit_ports (struct platform_device *pdev);@@ -1104,9 +1083,9 @@ static int dss_bind(struct device *dev) dss.pdev = pdev; - r =dss_init_features (dss.pdev); -if (r) -return r; + dss.feat =dss_get_features (); +if (!dss.feat) +return -ENODEV ; dss_mem =platform_get_resource (dss.pdev,IORESOURCE_MEM ,0 );if (!dss_mem) {drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c +7
-25@@ -189,47 +189,30 @@ static const struct hdmi_phy_features omap54xx_phy_feats = { .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 ()) {case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_phy_feats; -break ; +return &omap44xx_phy_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_phy_feats; -break ; +return &omap54xx_phy_feats;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 r;struct resource *res; - r =hdmi_phy_init_features (pdev); -if (r) -return r; + phy_feat =hdmi_phy_get_features (); +if (!phy_feat) +return -ENODEV ; res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"phy" );if (!res) { --2.15.0
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Adam,
Quoted 4 lines · Adam Ford
Quoted 3 lines · Ladislav Michl
As features data are read only, there is no need to allocate their copy on the heap.
Quoted 8 lines
Quoted 5 lines
Signed-off-by Ladislav Michl <[email protected]>Suggested-by Markus Elfring <[email protected]>---
Note: This patch is not runtime tested. If you have hardware and can test
it, please do so and eventually add you Tested-by tag. Thank you.Unfortunately, this fails to load properly on a Logic PD Torpedo kit (omap3630/DM3730).
Thank you for testing.
Quoted 1 line
[ 0.975097] omapdss_dss 48050000.dss: master bind failed: -517
This is -EPROBE_DEFER, you'll probably get that also without patch.
Quoted 1 line
[ 3.821807] omapdss_dispc 48050400.dispc: Failed to allocate DISPC Features
I wonder how could you get this as this is the message patch removes...
Quoted 7 lines
[ 3.829345] omapdss_dss 48050000.dss: failed to bind 48050400.dispc (ops dispc_component_ops): -12 [ 3.842254] omapdss_dss 48050000.dss: master bind failed: -12 [ 3.848724] omapdss_dispc: probe of 48050400.dispc failed with error -12I also get
[ 12.258056] panel-dpi display: failed to find video source
These are only consequences of above error.
Quoted 16 lines
Quoted 16 lines
Note2: Marcus, I hope it is okay to add your Suggested-by tag. Please
let me know, if I'm wrong.drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 39 ++++++--------------- drivers/video/fbdev/omap2/omapfb/dss/dss.c | 45 +++++++------------------ drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c | 31 ++++------------- 3 files changed, 29 insertions(+), 86 deletions(-)drivers/video/fbdev/omap2/omapfb/dss/dispc.c +0
-0@@ -3976,52 +3976,33 @@ static const struct dispc_features omap54xx_dispc_feats = { .has_writeback = true, };
Quoted 9 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c static const struct dispc_features omap54xx_dispc_feats = { · line 3986
Quoted 9 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +1
-7-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" );
Here -------------------------------------^
Quoted 211 lines
Quoted 211 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +9
-22-return -ENOMEM ; - } -switch (omapdss_get_version ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dispc_feats; -break ; +return &omap24xx_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES1: - src = &omap34xx_rev1_0_dispc_feats; -break ; +return &omap34xx_rev1_0_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_OMAP3630 :case OMAPDSS_VER_AM35xx:case OMAPDSS_VER_AM43xx: - src = &omap34xx_rev3_0_dispc_feats; -break ; +return &omap34xx_rev3_0_dispc_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dispc_feats; -break ; +return &omap44xx_dispc_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_dispc_feats; -break ; +return &omap54xx_dispc_feats;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)@@ -4078,9 +4059,9 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)spin_lock_init (&dispc.control_lock); - r =dispc_init_features (dispc.pdev); -if (r) -return r; + dispc.feat =dispc_get_features (); +if (!dispc.feat) +return -ENODEV ; dispc_mem =platform_get_resource (dispc.pdev,IORESOURCE_MEM ,0 );if (!dispc_mem) {drivers/video/fbdev/omap2/omapfb/dss/dss.c +12
-33@@ -887,58 +887,37 @@ static const struct dss_features dra7xx_dss_feats = { .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 ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dss_feats; -break ; +return &omap24xx_dss_feats;case OMAPDSS_VER_OMAP34xx_ES1:case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_AM35xx: - src = &omap34xx_dss_feats; -break ; +return &omap34xx_dss_feats;case OMAPDSS_VER_OMAP3630 : - src = &omap3630_dss_feats; -break ; +return &omap3630_dss_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dss_feats; -break ; +return &omap44xx_dss_feats;case OMAPDSS_VER_OMAP5 : - src = &omap54xx_dss_feats; -break ; +return &omap54xx_dss_feats;case OMAPDSS_VER_AM43xx: - src = &am43xx_dss_feats; -break ; +return &am43xx_dss_feats;case OMAPDSS_VER_DRA7xx: - src = &dra7xx_dss_feats; -break ; +return &dra7xx_dss_feats;default : -return -ENODEV ; +return NULL ; } - -memcpy (dst, src,sizeof (*dst)); - dss.feat = dst; - -return 0 ; }static void dss_uninit_ports (struct platform_device *pdev);@@ -1104,9 +1083,9 @@ static int dss_bind(struct device *dev) dss.pdev = pdev; - r =dss_init_features (dss.pdev); -if (r) -return r; + dss.feat =dss_get_features (); +if (!dss.feat) +return -ENODEV ; dss_mem =platform_get_resource (dss.pdev,IORESOURCE_MEM ,0 );if (!dss_mem) {drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c +7
-25@@ -189,47 +189,30 @@ static const struct hdmi_phy_features omap54xx_phy_feats = { .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 ()) {case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_phy_feats; -break ; +return &omap44xx_phy_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_phy_feats; -break ; +return &omap54xx_phy_feats;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 r;struct resource *res; - r =hdmi_phy_init_features (pdev); -if (r) -return r; + phy_feat =hdmi_phy_get_features (); +if (!phy_feat) +return -ENODEV ; res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"phy" );if (!res) { --2.15.0
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 52 lines · Ladislav Michl
Hi Adam,
Quoted 4 lines · Adam Ford
Quoted 3 lines · Ladislav Michl
As features data are read only, there is no need to allocate their copy on the heap.
Quoted 8 lines
Quoted 5 lines
Signed-off-by Ladislav Michl <[email protected]>Suggested-by Markus Elfring <[email protected]>---
Note: This patch is not runtime tested. If you have hardware and can test
it, please do so and eventually add you Tested-by tag. Thank you.Unfortunately, this fails to load properly on a Logic PD Torpedo kit (omap3630/DM3730).
Thank you for testing.
Quoted 1 line
[ 0.975097] omapdss_dss 48050000.dss: master bind failed: -517This is -EPROBE_DEFER, you'll probably get that also without patch.
Quoted 1 line
[ 3.821807] omapdss_dispc 48050400.dispc: Failed to allocate DISPC FeaturesI wonder how could you get this as this is the message patch removes...
Quoted 7 lines
[ 3.829345] omapdss_dss 48050000.dss: failed to bind 48050400.dispc (ops dispc_component_ops): -12 [ 3.842254] omapdss_dss 48050000.dss: master bind failed: -12 [ 3.848724] omapdss_dispc: probe of 48050400.dispc failed with error -12I also get
[ 12.258056] panel-dpi display: failed to find video sourceThese are only consequences of above error.
Quoted 16 lines
Quoted 16 lines
Note2: Marcus, I hope it is okay to add your Suggested-by tag. Please
let me know, if I'm wrong.drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 39 ++++++--------------- drivers/video/fbdev/omap2/omapfb/dss/dss.c | 45 +++++++------------------ drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c | 31 ++++------------- 3 files changed, 29 insertions(+), 86 deletions(-)drivers/video/fbdev/omap2/omapfb/dss/dispc.c +0
-0@@ -3976,52 +3976,33 @@ static const struct dispc_features omap54xx_dispc_feats = { .has_writeback = true, };
Quoted 12 lines
Quoted 9 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c static const struct dispc_features omap54xx_dispc_feats = { · line 3986
Quoted 9 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +1
-7-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" );Here -------------------------------------^
I copy-pasted the code from the URL. I assumed they were the same. I used it since copy-pasting tabs and spacing gets messaged up from my e-mail. Sorry about that.
I tried to apply the patch in the e-mail to 4.14.2 and it failed. (it could also be the fact that my e-mail program sucks and it's messing up characters)
Do you have a version or trunk you want me to use as the basis?
thanks
adam
Quoted 211 lines
Quoted 211 lines
Quoted 211 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +9
-22-return -ENOMEM ; - } -switch (omapdss_get_version ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dispc_feats; -break ; +return &omap24xx_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES1: - src = &omap34xx_rev1_0_dispc_feats; -break ; +return &omap34xx_rev1_0_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_OMAP3630 :case OMAPDSS_VER_AM35xx:case OMAPDSS_VER_AM43xx: - src = &omap34xx_rev3_0_dispc_feats; -break ; +return &omap34xx_rev3_0_dispc_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dispc_feats; -break ; +return &omap44xx_dispc_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_dispc_feats; -break ; +return &omap54xx_dispc_feats;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)@@ -4078,9 +4059,9 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)spin_lock_init (&dispc.control_lock); - r =dispc_init_features (dispc.pdev); -if (r) -return r; + dispc.feat =dispc_get_features (); +if (!dispc.feat) +return -ENODEV ; dispc_mem =platform_get_resource (dispc.pdev,IORESOURCE_MEM ,0 );if (!dispc_mem) {drivers/video/fbdev/omap2/omapfb/dss/dss.c +12
-33@@ -887,58 +887,37 @@ static const struct dss_features dra7xx_dss_feats = { .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 ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dss_feats; -break ; +return &omap24xx_dss_feats;case OMAPDSS_VER_OMAP34xx_ES1:case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_AM35xx: - src = &omap34xx_dss_feats; -break ; +return &omap34xx_dss_feats;case OMAPDSS_VER_OMAP3630 : - src = &omap3630_dss_feats; -break ; +return &omap3630_dss_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dss_feats; -break ; +return &omap44xx_dss_feats;case OMAPDSS_VER_OMAP5 : - src = &omap54xx_dss_feats; -break ; +return &omap54xx_dss_feats;case OMAPDSS_VER_AM43xx: - src = &am43xx_dss_feats; -break ; +return &am43xx_dss_feats;case OMAPDSS_VER_DRA7xx: - src = &dra7xx_dss_feats; -break ; +return &dra7xx_dss_feats;default : -return -ENODEV ; +return NULL ; } - -memcpy (dst, src,sizeof (*dst)); - dss.feat = dst; - -return 0 ; }static void dss_uninit_ports (struct platform_device *pdev);@@ -1104,9 +1083,9 @@ static int dss_bind(struct device *dev) dss.pdev = pdev; - r =dss_init_features (dss.pdev); -if (r) -return r; + dss.feat =dss_get_features (); +if (!dss.feat) +return -ENODEV ; dss_mem =platform_get_resource (dss.pdev,IORESOURCE_MEM ,0 );if (!dss_mem) {drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c +7
-25@@ -189,47 +189,30 @@ static const struct hdmi_phy_features omap54xx_phy_feats = { .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 ()) {case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_phy_feats; -break ; +return &omap44xx_phy_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_phy_feats; -break ; +return &omap54xx_phy_feats;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 r;struct resource *res; - r =hdmi_phy_init_features (pdev); -if (r) -return r; + phy_feat =hdmi_phy_get_features (); +if (!phy_feat) +return -ENODEV ; res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"phy" );if (!res) { --2.15.0
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 70 lines · Adam Ford
Quoted 52 lines · Ladislav Michl
Hi Adam,
Quoted 4 lines · Adam Ford
Quoted 3 lines · Ladislav Michl
As features data are read only, there is no need to allocate their copy on the heap.
Quoted 8 lines
Quoted 5 lines
Signed-off-by Ladislav Michl <[email protected]>Suggested-by Markus Elfring <[email protected]>---
Note: This patch is not runtime tested. If you have hardware and can test
it, please do so and eventually add you Tested-by tag. Thank you.Unfortunately, this fails to load properly on a Logic PD Torpedo kit (omap3630/DM3730).
Thank you for testing.
Quoted 1 line
[ 0.975097] omapdss_dss 48050000.dss: master bind failed: -517This is -EPROBE_DEFER, you'll probably get that also without patch.
Quoted 1 line
[ 3.821807] omapdss_dispc 48050400.dispc: Failed to allocate DISPC FeaturesI wonder how could you get this as this is the message patch removes...
Quoted 7 lines
[ 3.829345] omapdss_dss 48050000.dss: failed to bind 48050400.dispc (ops dispc_component_ops): -12 [ 3.842254] omapdss_dss 48050000.dss: master bind failed: -12 [ 3.848724] omapdss_dispc: probe of 48050400.dispc failed with error -12I also get
[ 12.258056] panel-dpi display: failed to find video sourceThese are only consequences of above error.
Quoted 16 lines
Quoted 16 lines
Note2: Marcus, I hope it is okay to add your Suggested-by tag. Please
let me know, if I'm wrong.drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 39 ++++++--------------- drivers/video/fbdev/omap2/omapfb/dss/dss.c | 45 +++++++------------------ drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c | 31 ++++------------- 3 files changed, 29 insertions(+), 86 deletions(-)drivers/video/fbdev/omap2/omapfb/dss/dispc.c +0
-0@@ -3976,52 +3976,33 @@ static const struct dispc_features omap54xx_dispc_feats = { .has_writeback = true, };Quoted 12 lines
Quoted 9 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c static const struct dispc_features omap54xx_dispc_feats = { · line 3986
Quoted 9 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +1
-7-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" );Here -------------------------------------^
I copy-pasted the code from the URL. I assumed they were the same. I used it since copy-pasting tabs and spacing gets messaged up from my e-mail. Sorry about that.
Quoted 6 lines
I tried to apply the patch in the e-mail to 4.14.2 and it failed. (it could also be the fact that my e-mail program sucks and it's messing up characters)
Do you have a version or trunk you want me to use as the basis?
If it's correct and the patch is this one:
https://patchwork.kernel.org/patch/10082025/
Then you can mark me as:
Quoted 215 lines
thanks
adam
Quoted 211 lines
Quoted 211 lines
Quoted 211 lines
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +9
-22-return -ENOMEM ; - } -switch (omapdss_get_version ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dispc_feats; -break ; +return &omap24xx_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES1: - src = &omap34xx_rev1_0_dispc_feats; -break ; +return &omap34xx_rev1_0_dispc_feats;case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_OMAP3630 :case OMAPDSS_VER_AM35xx:case OMAPDSS_VER_AM43xx: - src = &omap34xx_rev3_0_dispc_feats; -break ; +return &omap34xx_rev3_0_dispc_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dispc_feats; -break ; +return &omap44xx_dispc_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_dispc_feats; -break ; +return &omap54xx_dispc_feats;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)@@ -4078,9 +4059,9 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)spin_lock_init (&dispc.control_lock); - r =dispc_init_features (dispc.pdev); -if (r) -return r; + dispc.feat =dispc_get_features (); +if (!dispc.feat) +return -ENODEV ; dispc_mem =platform_get_resource (dispc.pdev,IORESOURCE_MEM ,0 );if (!dispc_mem) {drivers/video/fbdev/omap2/omapfb/dss/dss.c +12
-33@@ -887,58 +887,37 @@ static const struct dss_features dra7xx_dss_feats = { .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 ()) {case OMAPDSS_VER_OMAP24xx: - src = &omap24xx_dss_feats; -break ; +return &omap24xx_dss_feats;case OMAPDSS_VER_OMAP34xx_ES1:case OMAPDSS_VER_OMAP34xx_ES3:case OMAPDSS_VER_AM35xx: - src = &omap34xx_dss_feats; -break ; +return &omap34xx_dss_feats;case OMAPDSS_VER_OMAP3630 : - src = &omap3630_dss_feats; -break ; +return &omap3630_dss_feats;case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_dss_feats; -break ; +return &omap44xx_dss_feats;case OMAPDSS_VER_OMAP5 : - src = &omap54xx_dss_feats; -break ; +return &omap54xx_dss_feats;case OMAPDSS_VER_AM43xx: - src = &am43xx_dss_feats; -break ; +return &am43xx_dss_feats;case OMAPDSS_VER_DRA7xx: - src = &dra7xx_dss_feats; -break ; +return &dra7xx_dss_feats;default : -return -ENODEV ; +return NULL ; } - -memcpy (dst, src,sizeof (*dst)); - dss.feat = dst; - -return 0 ; }static void dss_uninit_ports (struct platform_device *pdev);@@ -1104,9 +1083,9 @@ static int dss_bind(struct device *dev) dss.pdev = pdev; - r =dss_init_features (dss.pdev); -if (r) -return r; + dss.feat =dss_get_features (); +if (!dss.feat) +return -ENODEV ; dss_mem =platform_get_resource (dss.pdev,IORESOURCE_MEM ,0 );if (!dss_mem) {drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c +7
-25@@ -189,47 +189,30 @@ static const struct hdmi_phy_features omap54xx_phy_feats = { .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 ()) {case OMAPDSS_VER_OMAP4430_ES1 :case OMAPDSS_VER_OMAP4430_ES2 :case OMAPDSS_VER_OMAP4 : - src = &omap44xx_phy_feats; -break ; +return &omap44xx_phy_feats;case OMAPDSS_VER_OMAP5 :case OMAPDSS_VER_DRA7xx: - src = &omap54xx_phy_feats; -break ; +return &omap54xx_phy_feats;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 r;struct resource *res; - r =hdmi_phy_init_features (pdev); -if (r) -return r; + phy_feat =hdmi_phy_get_features (); +if (!phy_feat) +return -ENODEV ; res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"phy" );if (!res) { --2.15.0
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Nov 29, 2017 at 10:45:52AM -0600, Adam Ford wrote:
[snip]
Quoted 2 lines
If it's correct and the patch is this one:
https://patchwork.kernel.org/patch/10082025/
Yes.
Quoted 3 lines
Then you can mark me as:
Tested-by Adam Ford <[email protected]> #omap3630
Thank you for testing. I'll wait a bit more for eventual objections and Marcus' decision about his credit before sending v2 :)
Best regards,
ladis
Bartlomiej Zolnierkiewicz
AppliedQuoted 5 lines · Ladislav Michl
On Wed, Nov 29, 2017 at 10:45:52AM -0600, Adam Ford wrote:
[snip]Quoted 2 lines
If it's correct and the patch is this one:
https://patchwork.kernel.org/patch/10082025/
Quoted 8 lines
Yes.
Quoted 3 lines
Then you can mark me as:
Tested-by Adam Ford <[email protected]> #omap3630Thank you for testing. I'll wait a bit more for eventual objections and Marcus' decision about his credit before sending v2 :)
After adding Adam's Tested-by tag and fixing minor CodingStyle errors reported by checkpatch.pl:
ERROR: "foo* bar" should be "foo *bar"
#37: FILE: drivers/video/fbdev/omap2/omapfb/dss/dispc.c:3979:
+static const struct dispc_features* dispc_get_features(void)
ERROR: "foo* bar" should be "foo *bar"
#114: FILE: drivers/video/fbdev/omap2/omapfb/dss/dss.c:890:
+static const struct dss_features* dss_get_features(void)
ERROR: "foo* bar" should be "foo *bar"
#199: FILE: drivers/video/fbdev/omap2/omapfb/dss/hdmi_phy.c:192:
+static const struct hdmi_phy_features* hdmi_phy_get_features(void)
I've queued your patch for 4.16, thanks.
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics