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 --- |