[bug report] clk: mediatek: mt8173: Break down clock drivers and allow module build
Dan Carpenter
error27 at gmail.com
Thu Feb 2 04:36:07 PST 2023
Hello AngeloGioacchino Del Regno,
The patch 4c02c9af3cb9: "clk: mediatek: mt8173: Break down clock
drivers and allow module build" from Jan 20, 2023, leads to the
following Smatch static checker warning:
drivers/clk/mediatek/clk-mt8173-apmixedsys.c:95 clk_mt8173_apmixed_probe()
warn: passing zero to 'PTR_ERR'
drivers/clk/mediatek/clk-mt8173-apmixedsys.c
85 static int clk_mt8173_apmixed_probe(struct platform_device *pdev)
86 {
87 struct device_node *node = pdev->dev.of_node;
88 struct clk_hw_onecell_data *clk_data;
89 void __iomem *base;
90 struct clk_hw *hw;
91 int r;
92
93 base = of_iomap(node, 0);
94 if (!base)
--> 95 return PTR_ERR(base);
return -ENOMEM;
96
97 clk_data = mtk_alloc_clk_data(CLK_APMIXED_NR_CLK);
98 if (IS_ERR_OR_NULL(clk_data))
99 return -ENOMEM;
mtk_alloc_clk_data() does not return error pointers. This needs to
call of_unmap(base);. The ->remove() function doesn't unmap base either.
100
101 r = mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls), clk_data);
102 if (r)
103 goto free_clk_data;
104
105 hw = mtk_clk_register_ref2usb_tx("ref2usb_tx", "clk26m", base + REGOFF_REF2USB);
106 if (IS_ERR(hw)) {
107 r = PTR_ERR(hw);
108 dev_err(&pdev->dev, "Failed to register ref2usb_tx: %d\n", r);
109 goto unregister_plls;
110 }
111 clk_data->hws[CLK_APMIXED_REF2USB_TX] = hw;
112
113 hw = devm_clk_hw_register_divider(&pdev->dev, "hdmi_ref", "tvdpll_594m", 0,
114 base + REGOFF_HDMI_REF, 16, 3,
115 CLK_DIVIDER_POWER_OF_TWO, NULL);
116 clk_data->hws[CLK_APMIXED_HDMI_REF] = hw;
117
118 r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
119 if (r)
120 goto unregister_ref2usb;
121
122 return 0;
123
124 unregister_ref2usb:
125 mtk_clk_unregister_ref2usb_tx(clk_data->hws[CLK_APMIXED_REF2USB_TX]);
126 unregister_plls:
127 mtk_clk_unregister_plls(plls, ARRAY_SIZE(plls), clk_data);
128 free_clk_data:
129 mtk_free_clk_data(clk_data);
130 return r;
131 }
regards,
dan carpenter
More information about the Linux-mediatek
mailing list