mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-11 17:59:05 +07:00
Merge branch 'baikal/drivers' into arm/drivers
These are mainly fixups for comments that collided with me already merging v3 of the series, and one patch that I had forgotten to pick up. * baikal/drivers: bus: bt1-axi: Build the driver into the kernel bus: bt1-apb: Build the driver into the kernel bus: bt1-axi: Use sysfs_streq instead of strncmp bus: bt1-axi: Optimize the return points in the driver bus: bt1-apb: Use sysfs_streq instead of strncmp bus: bt1-apb: Use PTR_ERR_OR_ZERO to return from request-regs method bus: bt1-apb: Fix show/store callback identations bus: bt1-apb: Include linux/io.h dt-bindings: memory: Add Baikal-T1 L2-cache Control Block binding Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
78f7d98be7
@ -0,0 +1,63 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
# Copyright (C) 2020 BAIKAL ELECTRONICS, JSC
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/memory-controllers/baikal,bt1-l2-ctl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Baikal-T1 L2-cache Control Block
|
||||
|
||||
maintainers:
|
||||
- Serge Semin <fancer.lancer@gmail.com>
|
||||
|
||||
description: |
|
||||
By means of the System Controller Baikal-T1 SoC exposes a few settings to
|
||||
tune the MIPS P5600 CM2 L2 cache performance up. In particular it's possible
|
||||
to change the Tag, Data and Way-select RAM access latencies. Baikal-T1
|
||||
L2-cache controller block is responsible for the tuning. Its DT node is
|
||||
supposed to be a child of the system controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: baikal,bt1-l2-ctl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
baikal,l2-ws-latency:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Cycles of latency for Way-select RAM accesses
|
||||
default: 0
|
||||
minimum: 0
|
||||
maximum: 3
|
||||
|
||||
baikal,l2-tag-latency:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Cycles of latency for Tag RAM accesses
|
||||
default: 0
|
||||
minimum: 0
|
||||
maximum: 3
|
||||
|
||||
baikal,l2-data-latency:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Cycles of latency for Data RAM accesses
|
||||
default: 1
|
||||
minimum: 0
|
||||
maximum: 3
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
examples:
|
||||
- |
|
||||
l2@1f04d028 {
|
||||
compatible = "baikal,bt1-l2-ctl";
|
||||
reg = <0x1f04d028 0x004>;
|
||||
|
||||
baikal,l2-ws-latency = <1>;
|
||||
baikal,l2-tag-latency = <1>;
|
||||
baikal,l2-data-latency = <2>;
|
||||
};
|
||||
...
|
@ -30,7 +30,7 @@ config BRCMSTB_GISB_ARB
|
||||
and internal bus master decoding.
|
||||
|
||||
config BT1_APB
|
||||
tristate "Baikal-T1 APB-bus driver"
|
||||
bool "Baikal-T1 APB-bus driver"
|
||||
depends on MIPS_BAIKAL_T1 || COMPILE_TEST
|
||||
select REGMAP_MMIO
|
||||
help
|
||||
@ -45,7 +45,7 @@ config BT1_APB
|
||||
accessed via corresponding sysfs nodes.
|
||||
|
||||
config BT1_AXI
|
||||
tristate "Baikal-T1 AXI-bus driver"
|
||||
bool "Baikal-T1 AXI-bus driver"
|
||||
depends on MIPS_BAIKAL_T1 || COMPILE_TEST
|
||||
select MFD_SYSCON
|
||||
help
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/nmi.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/regmap.h>
|
||||
@ -163,12 +164,10 @@ static int bt1_apb_request_regs(struct bt1_apb *apb)
|
||||
}
|
||||
|
||||
apb->res = devm_platform_ioremap_resource_byname(pdev, "nodev");
|
||||
if (IS_ERR(apb->res)) {
|
||||
if (IS_ERR(apb->res))
|
||||
dev_err(apb->dev, "Couldn't map reserved region\n");
|
||||
return PTR_ERR(apb->res);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return PTR_ERR_OR_ZERO(apb->res);
|
||||
}
|
||||
|
||||
static int bt1_apb_request_rst(struct bt1_apb *apb)
|
||||
@ -310,15 +309,15 @@ static ssize_t timeout_store(struct device *dev,
|
||||
}
|
||||
static DEVICE_ATTR_RW(timeout);
|
||||
|
||||
static ssize_t inject_error_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
static ssize_t inject_error_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
return scnprintf(buf, PAGE_SIZE, "Error injection: nodev irq\n");
|
||||
}
|
||||
|
||||
static ssize_t inject_error_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *data, size_t count)
|
||||
struct device_attribute *attr,
|
||||
const char *data, size_t count)
|
||||
{
|
||||
struct bt1_apb *apb = dev_get_drvdata(dev);
|
||||
|
||||
@ -326,9 +325,9 @@ static ssize_t inject_error_store(struct device *dev,
|
||||
* Either dummy read from the unmapped address in the APB IO area
|
||||
* or manually set the IRQ status.
|
||||
*/
|
||||
if (!strncmp(data, "nodev", 5))
|
||||
if (sysfs_streq(data, "nodev"))
|
||||
readl(apb->res);
|
||||
else if (!strncmp(data, "irq", 3))
|
||||
else if (sysfs_streq(data, "irq"))
|
||||
regmap_update_bits(apb->regs, APB_EHB_ISR, APB_EHB_ISR_PENDING,
|
||||
APB_EHB_ISR_PENDING);
|
||||
else
|
||||
|
@ -124,12 +124,10 @@ static int bt1_axi_request_regs(struct bt1_axi *axi)
|
||||
}
|
||||
|
||||
axi->qos_regs = devm_platform_ioremap_resource_byname(pdev, "qos");
|
||||
if (IS_ERR(axi->qos_regs)) {
|
||||
if (IS_ERR(axi->qos_regs))
|
||||
dev_err(dev, "Couldn't map AXI-bus QoS registers\n");
|
||||
return PTR_ERR(axi->qos_regs);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return PTR_ERR_OR_ZERO(axi->qos_regs);
|
||||
}
|
||||
|
||||
static int bt1_axi_request_rst(struct bt1_axi *axi)
|
||||
@ -173,12 +171,10 @@ static int bt1_axi_request_clk(struct bt1_axi *axi)
|
||||
}
|
||||
|
||||
ret = devm_add_action_or_reset(axi->dev, bt1_axi_disable_clk, axi);
|
||||
if (ret) {
|
||||
if (ret)
|
||||
dev_err(axi->dev, "Can't add AXI clock disable action\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int bt1_axi_request_irq(struct bt1_axi *axi)
|
||||
@ -192,12 +188,10 @@ static int bt1_axi_request_irq(struct bt1_axi *axi)
|
||||
|
||||
ret = devm_request_irq(axi->dev, axi->irq, bt1_axi_isr, IRQF_SHARED,
|
||||
"bt1-axi", axi);
|
||||
if (ret) {
|
||||
if (ret)
|
||||
dev_err(axi->dev, "Couldn't request AXI EHB IRQ\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t count_show(struct device *dev,
|
||||
@ -226,9 +220,9 @@ static ssize_t inject_error_store(struct device *dev,
|
||||
* error while unaligned writing - the AXI bus write error handled
|
||||
* by this driver.
|
||||
*/
|
||||
if (!strncmp(data, "bus", 3))
|
||||
if (sysfs_streq(data, "bus"))
|
||||
readb(axi->qos_regs);
|
||||
else if (!strncmp(data, "unaligned", 9))
|
||||
else if (sysfs_streq(data, "unaligned"))
|
||||
writeb(0, axi->qos_regs);
|
||||
else
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user