diff options
author | Arvind Yadav <arvind.yadav.cs@gmail.com> | 2017-03-20 13:30:59 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> | 2017-03-20 13:30:59 -0400 |
commit | 0348aaa34412e24ebe622a2b1b013e68d6ae5412 (patch) | |
tree | 6986e0db60d169b3f72c5ac5b69083c0005534e1 | |
parent | c1ae3cfa0e89fa1a7ecc4c99031f5e9ae99d9201 (diff) |
omapfb: dss: Handle return errors in dss_init_ports()
dss_init_ports() is not handling return errors from dpi_init_port() and
sdi_init_port(). It is also always returning 0 currently which results in
part of error handling code in dss_bind() being unused.
Fix dss_init_ports() to handle return errors from dpi_init_port() and
sdi_init_port().
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Cc: tomi.valkeinen@ti.com
[b.zolnierkie: fail early on errors, minor fixups]
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
-rw-r--r-- | drivers/video/fbdev/omap2/omapfb/dss/dss.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/dss.c b/drivers/video/fbdev/omap2/omapfb/dss/dss.c index 47d7f69ad9ad..48c6500c24e1 100644 --- a/drivers/video/fbdev/omap2/omapfb/dss/dss.c +++ b/drivers/video/fbdev/omap2/omapfb/dss/dss.c | |||
@@ -941,11 +941,13 @@ static int dss_init_features(struct platform_device *pdev) | |||
941 | return 0; | 941 | return 0; |
942 | } | 942 | } |
943 | 943 | ||
944 | static void dss_uninit_ports(struct platform_device *pdev); | ||
945 | |||
944 | static int dss_init_ports(struct platform_device *pdev) | 946 | static int dss_init_ports(struct platform_device *pdev) |
945 | { | 947 | { |
946 | struct device_node *parent = pdev->dev.of_node; | 948 | struct device_node *parent = pdev->dev.of_node; |
947 | struct device_node *port; | 949 | struct device_node *port; |
948 | int r; | 950 | int r, ret = 0; |
949 | 951 | ||
950 | if (parent == NULL) | 952 | if (parent == NULL) |
951 | return 0; | 953 | return 0; |
@@ -972,17 +974,21 @@ static int dss_init_ports(struct platform_device *pdev) | |||
972 | 974 | ||
973 | switch (port_type) { | 975 | switch (port_type) { |
974 | case OMAP_DISPLAY_TYPE_DPI: | 976 | case OMAP_DISPLAY_TYPE_DPI: |
975 | dpi_init_port(pdev, port); | 977 | ret = dpi_init_port(pdev, port); |
976 | break; | 978 | break; |
977 | case OMAP_DISPLAY_TYPE_SDI: | 979 | case OMAP_DISPLAY_TYPE_SDI: |
978 | sdi_init_port(pdev, port); | 980 | ret = sdi_init_port(pdev, port); |
979 | break; | 981 | break; |
980 | default: | 982 | default: |
981 | break; | 983 | break; |
982 | } | 984 | } |
983 | } while ((port = omapdss_of_get_next_port(parent, port)) != NULL); | 985 | } while (!ret && |
986 | (port = omapdss_of_get_next_port(parent, port)) != NULL); | ||
984 | 987 | ||
985 | return 0; | 988 | if (ret) |
989 | dss_uninit_ports(pdev); | ||
990 | |||
991 | return ret; | ||
986 | } | 992 | } |
987 | 993 | ||
988 | static void dss_uninit_ports(struct platform_device *pdev) | 994 | static void dss_uninit_ports(struct platform_device *pdev) |