bt1-axi.c (0d583273b49a2305d6f5fff668575bdbf9e85c70) bt1-axi.c (7f57416f2aebe6f8b6ad105b4ca58b347fb2dd2c)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2020 BAIKAL ELECTRONICS, JSC
4 *
5 * Authors:
6 * Serge Semin <Sergey.Semin@baikalelectronics.ru>
7 *
8 * Baikal-T1 AXI-bus driver

--- 110 unchanged lines hidden (view full) ---

119
120 axi->sys_regs = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
121 if (IS_ERR(axi->sys_regs)) {
122 dev_err(dev, "Couldn't find syscon registers\n");
123 return PTR_ERR(axi->sys_regs);
124 }
125
126 axi->qos_regs = devm_platform_ioremap_resource_byname(pdev, "qos");
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2020 BAIKAL ELECTRONICS, JSC
4 *
5 * Authors:
6 * Serge Semin <Sergey.Semin@baikalelectronics.ru>
7 *
8 * Baikal-T1 AXI-bus driver

--- 110 unchanged lines hidden (view full) ---

119
120 axi->sys_regs = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
121 if (IS_ERR(axi->sys_regs)) {
122 dev_err(dev, "Couldn't find syscon registers\n");
123 return PTR_ERR(axi->sys_regs);
124 }
125
126 axi->qos_regs = devm_platform_ioremap_resource_byname(pdev, "qos");
127 if (IS_ERR(axi->qos_regs)) {
127 if (IS_ERR(axi->qos_regs))
128 dev_err(dev, "Couldn't map AXI-bus QoS registers\n");
128 dev_err(dev, "Couldn't map AXI-bus QoS registers\n");
129 return PTR_ERR(axi->qos_regs);
130 }
131
129
132 return 0;
130 return PTR_ERR_OR_ZERO(axi->qos_regs);
133}
134
135static int bt1_axi_request_rst(struct bt1_axi *axi)
136{
137 int ret;
138
139 axi->arst = devm_reset_control_get_optional_exclusive(axi->dev, "arst");
140 if (IS_ERR(axi->arst)) {

--- 27 unchanged lines hidden (view full) ---

168
169 ret = clk_prepare_enable(axi->aclk);
170 if (ret) {
171 dev_err(axi->dev, "Couldn't enable the AXI clock\n");
172 return ret;
173 }
174
175 ret = devm_add_action_or_reset(axi->dev, bt1_axi_disable_clk, axi);
131}
132
133static int bt1_axi_request_rst(struct bt1_axi *axi)
134{
135 int ret;
136
137 axi->arst = devm_reset_control_get_optional_exclusive(axi->dev, "arst");
138 if (IS_ERR(axi->arst)) {

--- 27 unchanged lines hidden (view full) ---

166
167 ret = clk_prepare_enable(axi->aclk);
168 if (ret) {
169 dev_err(axi->dev, "Couldn't enable the AXI clock\n");
170 return ret;
171 }
172
173 ret = devm_add_action_or_reset(axi->dev, bt1_axi_disable_clk, axi);
176 if (ret) {
174 if (ret)
177 dev_err(axi->dev, "Can't add AXI clock disable action\n");
175 dev_err(axi->dev, "Can't add AXI clock disable action\n");
178 return ret;
179 }
180
176
181 return 0;
177 return ret;
182}
183
184static int bt1_axi_request_irq(struct bt1_axi *axi)
185{
186 struct platform_device *pdev = to_platform_device(axi->dev);
187 int ret;
188
189 axi->irq = platform_get_irq(pdev, 0);
190 if (axi->irq < 0)
191 return axi->irq;
192
193 ret = devm_request_irq(axi->dev, axi->irq, bt1_axi_isr, IRQF_SHARED,
194 "bt1-axi", axi);
178}
179
180static int bt1_axi_request_irq(struct bt1_axi *axi)
181{
182 struct platform_device *pdev = to_platform_device(axi->dev);
183 int ret;
184
185 axi->irq = platform_get_irq(pdev, 0);
186 if (axi->irq < 0)
187 return axi->irq;
188
189 ret = devm_request_irq(axi->dev, axi->irq, bt1_axi_isr, IRQF_SHARED,
190 "bt1-axi", axi);
195 if (ret) {
191 if (ret)
196 dev_err(axi->dev, "Couldn't request AXI EHB IRQ\n");
192 dev_err(axi->dev, "Couldn't request AXI EHB IRQ\n");
197 return ret;
198 }
199
193
200 return 0;
194 return ret;
201}
202
203static ssize_t count_show(struct device *dev,
204 struct device_attribute *attr, char *buf)
205{
206 struct bt1_axi *axi = dev_get_drvdata(dev);
207
208 return scnprintf(buf, PAGE_SIZE, "%d\n", atomic_read(&axi->count));

--- 112 unchanged lines hidden ---
195}
196
197static ssize_t count_show(struct device *dev,
198 struct device_attribute *attr, char *buf)
199{
200 struct bt1_axi *axi = dev_get_drvdata(dev);
201
202 return scnprintf(buf, PAGE_SIZE, "%d\n", atomic_read(&axi->count));

--- 112 unchanged lines hidden ---