This commit is contained in:
DHDAXCW 2022-08-21 14:31:22 +00:00
parent 0ad14806ff
commit 295551b5e7
9 changed files with 149 additions and 176 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-5.4 = .188 LINUX_VERSION-5.4 = .189
LINUX_KERNEL_HASH-5.4.188 = 9fbc8bfdc28c9fce2307bdf7cf1172c9819df673397a411c40a5c3d0a570fdbc LINUX_KERNEL_HASH-5.4.189 = 8485d536531833cd2dbca0a7f267daff69ede5c9831cb693acc8318447e568c6

View File

@ -25,7 +25,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/dsa/mv88e6xxx/chip.c --- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4926,6 +4926,80 @@ static int mv88e6xxx_port_mdb_del(struct @@ -4927,6 +4927,80 @@ static int mv88e6xxx_port_mdb_del(struct
return err; return err;
} }
@ -106,7 +106,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
static int mv88e6xxx_port_egress_floods(struct dsa_switch *ds, int port, static int mv88e6xxx_port_egress_floods(struct dsa_switch *ds, int port,
bool unicast, bool multicast) bool unicast, bool multicast)
{ {
@@ -4980,6 +5054,8 @@ static const struct dsa_switch_ops mv88e @@ -4981,6 +5055,8 @@ static const struct dsa_switch_ops mv88e
.port_mdb_prepare = mv88e6xxx_port_mdb_prepare, .port_mdb_prepare = mv88e6xxx_port_mdb_prepare,
.port_mdb_add = mv88e6xxx_port_mdb_add, .port_mdb_add = mv88e6xxx_port_mdb_add,
.port_mdb_del = mv88e6xxx_port_mdb_del, .port_mdb_del = mv88e6xxx_port_mdb_del,

View File

@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/dsa/mv88e6xxx/chip.c --- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4993,7 +4993,7 @@ static void mv88e6xxx_port_mirror_del(st @@ -4994,7 +4994,7 @@ static void mv88e6xxx_port_mirror_del(st
if (chip->info->ops->set_egress_port(chip, if (chip->info->ops->set_egress_port(chip,
direction, direction,
dsa_upstream_port(ds, dsa_upstream_port(ds,

View File

@ -8,7 +8,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
--- a/drivers/mtd/ubi/build.c --- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c
@@ -1168,6 +1168,73 @@ static struct mtd_info * __init open_mtd @@ -1161,6 +1161,73 @@ static struct mtd_info * __init open_mtd
return mtd; return mtd;
} }
@ -82,7 +82,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
static int __init ubi_init(void) static int __init ubi_init(void)
{ {
int err, i, k; int err, i, k;
@@ -1251,6 +1318,12 @@ static int __init ubi_init(void) @@ -1244,6 +1311,12 @@ static int __init ubi_init(void)
} }
} }

View File

@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (ret < 0) if (ret < 0)
goto out; goto out;
@@ -564,6 +570,17 @@ full_scan: @@ -566,6 +572,17 @@ full_scan:
return err; return err;
} }

View File

@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* /*
* Get the required data from the packet. * Get the required data from the packet.
*/ */
@@ -1130,7 +1136,7 @@ int nf_conntrack_tcp_packet(struct nf_co @@ -1139,7 +1145,7 @@ int nf_conntrack_tcp_packet(struct nf_co
IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED && IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK]) timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
timeout = timeouts[TCP_CONNTRACK_UNACK]; timeout = timeouts[TCP_CONNTRACK_UNACK];

View File

@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
--- a/drivers/net/dsa/mv88e6xxx/chip.c --- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5080,6 +5080,7 @@ static int mv88e6xxx_register_switch(str @@ -5081,6 +5081,7 @@ static int mv88e6xxx_register_switch(str
ds->ops = &mv88e6xxx_switch_ops; ds->ops = &mv88e6xxx_switch_ops;
ds->ageing_time_min = chip->info->age_time_coeff; ds->ageing_time_min = chip->info->age_time_coeff;
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX; ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;

View File

@ -16,9 +16,6 @@ Subject: [PATCH] crypto: rockchip: add support r3399
create mode 100644 Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml create mode 100644 Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
delete mode 100644 Documentation/devicetree/bindings/crypto/rockchip-crypto.txt delete mode 100644 Documentation/devicetree/bindings/crypto/rockchip-crypto.txt
diff --git a/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
new file mode 100644
index 000000000..cdfa8aa5f
--- /dev/null --- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml +++ b/Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml
@@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
@ -87,9 +84,6 @@ index 000000000..cdfa8aa5f
+ reset-names = "crypto-rst"; + reset-names = "crypto-rst";
+ }; + };
\ No newline at end of file \ No newline at end of file
diff --git a/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt b/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt
deleted file mode 100644
index 5e2ba385b..000000000
--- a/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt --- a/Documentation/devicetree/bindings/crypto/rockchip-crypto.txt
+++ /dev/null +++ /dev/null
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
@ -121,8 +115,6 @@ index 5e2ba385b..000000000
- resets = <&cru SRST_CRYPTO>; - resets = <&cru SRST_CRYPTO>;
- reset-names = "crypto-rst"; - reset-names = "crypto-rst";
- }; - };
diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 1f6308cdf..df8e24c00 100644
--- a/drivers/crypto/Kconfig --- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig
@@ -688,6 +688,7 @@ config CRYPTO_DEV_SUN4I_SS_PRNG @@ -688,6 +688,7 @@ config CRYPTO_DEV_SUN4I_SS_PRNG
@ -157,8 +149,6 @@ index 1f6308cdf..df8e24c00 100644
config CRYPTO_DEV_CCREE config CRYPTO_DEV_CCREE
tristate "Support for ARM TrustZone CryptoCell family of security processors" tristate "Support for ARM TrustZone CryptoCell family of security processors"
depends on CRYPTO && CRYPTO_HW && OF && HAS_DMA depends on CRYPTO && CRYPTO_HW && OF && HAS_DMA
diff --git a/drivers/crypto/rockchip/rk3288_crypto.c b/drivers/crypto/rockchip/rk3288_crypto.c
index e5714ef24..0e16f7358 100644
--- a/drivers/crypto/rockchip/rk3288_crypto.c --- a/drivers/crypto/rockchip/rk3288_crypto.c
+++ b/drivers/crypto/rockchip/rk3288_crypto.c +++ b/drivers/crypto/rockchip/rk3288_crypto.c
@@ -10,238 +10,107 @@ @@ -10,238 +10,107 @@
@ -231,21 +221,14 @@ index e5714ef24..0e16f7358 100644
- clk_disable_unprepare(dev->hclk); - clk_disable_unprepare(dev->hclk);
- clk_disable_unprepare(dev->aclk); - clk_disable_unprepare(dev->aclk);
- clk_disable_unprepare(dev->sclk); - clk_disable_unprepare(dev->sclk);
+ clk_bulk_disable_unprepare(dev->num_clks, dev->clks); -}
} -
-static int check_alignment(struct scatterlist *sg_src, -static int check_alignment(struct scatterlist *sg_src,
- struct scatterlist *sg_dst, - struct scatterlist *sg_dst,
- int align_mask) - int align_mask)
+/* -{
+ * Power management strategy: The device is suspended unless a TFM exists for
+ * one of the algorithms proposed by this driver.
+ */
+static int rk_crypto_pm_suspend(struct device *dev)
{
- int in, out, align; - int in, out, align;
+ struct rk_crypto_info *rkdev = dev_get_drvdata(dev); -
- in = IS_ALIGNED((uint32_t)sg_src->offset, 4) && - in = IS_ALIGNED((uint32_t)sg_src->offset, 4) &&
- IS_ALIGNED((uint32_t)sg_src->length, align_mask); - IS_ALIGNED((uint32_t)sg_src->length, align_mask);
- if (!sg_dst) - if (!sg_dst)
@ -253,8 +236,7 @@ index e5714ef24..0e16f7358 100644
- out = IS_ALIGNED((uint32_t)sg_dst->offset, 4) && - out = IS_ALIGNED((uint32_t)sg_dst->offset, 4) &&
- IS_ALIGNED((uint32_t)sg_dst->length, align_mask); - IS_ALIGNED((uint32_t)sg_dst->length, align_mask);
- align = in && out; - align = in && out;
+ reset_control_assert(rkdev->rst); -
- return (align && (sg_src->length == sg_dst->length)); - return (align && (sg_src->length == sg_dst->length));
-} -}
- -
@ -323,36 +305,44 @@ index e5714ef24..0e16f7358 100644
- } - }
- } - }
- dev->count = count; - dev->count = count;
+ rk_crypto_disable_clk(rkdev); - return 0;
return 0; + clk_bulk_disable_unprepare(dev->num_clks, dev->clks);
} }
-static void rk_unload_data(struct rk_crypto_info *dev) -static void rk_unload_data(struct rk_crypto_info *dev)
+static int rk_crypto_pm_resume(struct device *dev) +/*
+ * Power management strategy: The device is suspended unless a TFM exists for
+ * one of the algorithms proposed by this driver.
+ */
+static int rk_crypto_pm_suspend(struct device *dev)
{ {
- struct scatterlist *sg_in, *sg_out; - struct scatterlist *sg_in, *sg_out;
+ struct rk_crypto_info *rkdev = dev_get_drvdata(dev); + struct rk_crypto_info *rkdev = dev_get_drvdata(dev);
- sg_in = dev->aligned ? dev->sg_src : &dev->sg_tmp; - sg_in = dev->aligned ? dev->sg_src : &dev->sg_tmp;
- dma_unmap_sg(dev->dev, sg_in, 1, DMA_TO_DEVICE); - dma_unmap_sg(dev->dev, sg_in, 1, DMA_TO_DEVICE);
+ reset_control_deassert(rkdev->rst); + reset_control_assert(rkdev->rst);
- if (dev->sg_dst) { - if (dev->sg_dst) {
- sg_out = dev->aligned ? dev->sg_dst : &dev->sg_tmp; - sg_out = dev->aligned ? dev->sg_dst : &dev->sg_tmp;
- dma_unmap_sg(dev->dev, sg_out, 1, DMA_FROM_DEVICE); - dma_unmap_sg(dev->dev, sg_out, 1, DMA_FROM_DEVICE);
- } - }
+ return rk_crypto_enable_clk(rkdev); + rk_crypto_disable_clk(rkdev);
+ return 0;
} }
-static irqreturn_t rk_crypto_irq_handle(int irq, void *dev_id) -static irqreturn_t rk_crypto_irq_handle(int irq, void *dev_id)
-{ +static int rk_crypto_pm_resume(struct device *dev)
{
- struct rk_crypto_info *dev = platform_get_drvdata(dev_id); - struct rk_crypto_info *dev = platform_get_drvdata(dev_id);
- u32 interrupt_status; - u32 interrupt_status;
- + struct rk_crypto_info *rkdev = dev_get_drvdata(dev);
- spin_lock(&dev->lock); - spin_lock(&dev->lock);
- interrupt_status = CRYPTO_READ(dev, RK_CRYPTO_INTSTS); - interrupt_status = CRYPTO_READ(dev, RK_CRYPTO_INTSTS);
- CRYPTO_WRITE(dev, RK_CRYPTO_INTSTS, interrupt_status); - CRYPTO_WRITE(dev, RK_CRYPTO_INTSTS, interrupt_status);
- + reset_control_deassert(rkdev->rst);
- if (interrupt_status & 0x0a) { - if (interrupt_status & 0x0a) {
- dev_warn(dev->dev, "DMA Error\n"); - dev_warn(dev->dev, "DMA Error\n");
- dev->err = -EFAULT; - dev->err = -EFAULT;
@ -361,14 +351,21 @@ index e5714ef24..0e16f7358 100644
- -
- spin_unlock(&dev->lock); - spin_unlock(&dev->lock);
- return IRQ_HANDLED; - return IRQ_HANDLED;
-} + return rk_crypto_enable_clk(rkdev);
- }
-static int rk_crypto_enqueue(struct rk_crypto_info *dev, -static int rk_crypto_enqueue(struct rk_crypto_info *dev,
- struct crypto_async_request *async_req) - struct crypto_async_request *async_req)
-{ +static const struct dev_pm_ops rk_crypto_pm_ops = {
+ SET_RUNTIME_PM_OPS(rk_crypto_pm_suspend, rk_crypto_pm_resume, NULL)
+};
+
+static int rk_crypto_pm_init(struct rk_crypto_info *rkdev)
{
- unsigned long flags; - unsigned long flags;
- int ret; - int ret;
- + int err;
- spin_lock_irqsave(&dev->lock, flags); - spin_lock_irqsave(&dev->lock, flags);
- ret = crypto_enqueue_request(&dev->queue, async_req); - ret = crypto_enqueue_request(&dev->queue, async_req);
- if (dev->busy) { - if (dev->busy) {
@ -378,15 +375,19 @@ index e5714ef24..0e16f7358 100644
- dev->busy = true; - dev->busy = true;
- spin_unlock_irqrestore(&dev->lock, flags); - spin_unlock_irqrestore(&dev->lock, flags);
- tasklet_schedule(&dev->queue_task); - tasklet_schedule(&dev->queue_task);
- + pm_runtime_use_autosuspend(rkdev->dev);
+ pm_runtime_set_autosuspend_delay(rkdev->dev, 2000);
- return ret; - return ret;
-} + err = pm_runtime_set_suspended(rkdev->dev);
+static const struct dev_pm_ops rk_crypto_pm_ops = { + if (err)
+ SET_RUNTIME_PM_OPS(rk_crypto_pm_suspend, rk_crypto_pm_resume, NULL) + return err;
+}; + pm_runtime_enable(rkdev->dev);
+ return err;
}
-static void rk_crypto_queue_task_cb(unsigned long data) -static void rk_crypto_queue_task_cb(unsigned long data)
+static int rk_crypto_pm_init(struct rk_crypto_info *rkdev) +static void rk_crypto_pm_exit(struct rk_crypto_info *rkdev)
{ {
- struct rk_crypto_info *dev = (struct rk_crypto_info *)data; - struct rk_crypto_info *dev = (struct rk_crypto_info *)data;
- struct crypto_async_request *async_req, *backlog; - struct crypto_async_request *async_req, *backlog;
@ -404,42 +405,31 @@ index e5714ef24..0e16f7358 100644
- return; - return;
- } - }
- spin_unlock_irqrestore(&dev->lock, flags); - spin_unlock_irqrestore(&dev->lock, flags);
+ int err; -
- if (backlog) { - if (backlog) {
- backlog->complete(backlog, -EINPROGRESS); - backlog->complete(backlog, -EINPROGRESS);
- backlog = NULL; - backlog = NULL;
- } - }
+ pm_runtime_use_autosuspend(rkdev->dev); -
+ pm_runtime_set_autosuspend_delay(rkdev->dev, 2000);
- dev->async_req = async_req; - dev->async_req = async_req;
- err = dev->start(dev); - err = dev->start(dev);
+ err = pm_runtime_set_suspended(rkdev->dev); - if (err)
if (err)
- dev->complete(dev->async_req, err); - dev->complete(dev->async_req, err);
+ return err; + pm_runtime_disable(rkdev->dev);
+ pm_runtime_enable(rkdev->dev);
+ return err;
} }
-static void rk_crypto_done_task_cb(unsigned long data) -static void rk_crypto_done_task_cb(unsigned long data)
+static void rk_crypto_pm_exit(struct rk_crypto_info *rkdev) +static irqreturn_t rk_crypto_irq_handle(int irq, void *dev_id)
{ {
- struct rk_crypto_info *dev = (struct rk_crypto_info *)data; - struct rk_crypto_info *dev = (struct rk_crypto_info *)data;
+ pm_runtime_disable(rkdev->dev);
+}
- if (dev->err) {
- dev->complete(dev->async_req, dev->err);
- return;
+static irqreturn_t rk_crypto_irq_handle(int irq, void *dev_id)
+{
+ struct rk_crypto_info *dev = platform_get_drvdata(dev_id); + struct rk_crypto_info *dev = platform_get_drvdata(dev_id);
+ void __iomem *reg; + void __iomem *reg;
+ u32 interrupt_status; + u32 interrupt_status;
+ int i; + int i;
+
- if (dev->err) {
- dev->complete(dev->async_req, dev->err);
- return;
+ for (i = 0; i < dev->variant->num_instance; i++) { + for (i = 0; i < dev->variant->num_instance; i++) {
+ if (dev->rki[i].irq != irq) + if (dev->rki[i].irq != irq)
+ continue; + continue;
@ -462,7 +452,7 @@ index e5714ef24..0e16f7358 100644
} }
static struct rk_crypto_tmp *rk_cipher_algs[] = { static struct rk_crypto_tmp *rk_cipher_algs[] = {
@@ -256,6 +125,41 @@ static struct rk_crypto_tmp *rk_cipher_algs[] = { @@ -256,6 +125,41 @@ static struct rk_crypto_tmp *rk_cipher_a
&rk_ahash_md5, &rk_ahash_md5,
}; };
@ -504,7 +494,7 @@ index e5714ef24..0e16f7358 100644
static int rk_crypto_register(struct rk_crypto_info *crypto_info) static int rk_crypto_register(struct rk_crypto_info *crypto_info)
{ {
unsigned int i, k; unsigned int i, k;
@@ -263,12 +167,24 @@ static int rk_crypto_register(struct rk_crypto_info *crypto_info) @@ -263,12 +167,24 @@ static int rk_crypto_register(struct rk_
for (i = 0; i < ARRAY_SIZE(rk_cipher_algs); i++) { for (i = 0; i < ARRAY_SIZE(rk_cipher_algs); i++) {
rk_cipher_algs[i]->dev = crypto_info; rk_cipher_algs[i]->dev = crypto_info;
@ -535,7 +525,7 @@ index e5714ef24..0e16f7358 100644
if (err) if (err)
goto err_cipher_algs; goto err_cipher_algs;
} }
@@ -276,8 +192,8 @@ static int rk_crypto_register(struct rk_crypto_info *crypto_info) @@ -276,8 +192,8 @@ static int rk_crypto_register(struct rk_
err_cipher_algs: err_cipher_algs:
for (k = 0; k < i; k++) { for (k = 0; k < i; k++) {
@ -577,7 +567,7 @@ index e5714ef24..0e16f7358 100644
{} {}
}; };
MODULE_DEVICE_TABLE(of, crypto_of_id_table); MODULE_DEVICE_TABLE(of, crypto_of_id_table);
@@ -314,6 +228,7 @@ static int rk_crypto_probe(struct platform_device *pdev) @@ -314,6 +228,7 @@ static int rk_crypto_probe(struct platfo
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct rk_crypto_info *crypto_info; struct rk_crypto_info *crypto_info;
int err = 0; int err = 0;
@ -585,7 +575,7 @@ index e5714ef24..0e16f7358 100644
crypto_info = devm_kzalloc(&pdev->dev, crypto_info = devm_kzalloc(&pdev->dev,
sizeof(*crypto_info), GFP_KERNEL); sizeof(*crypto_info), GFP_KERNEL);
@@ -322,84 +237,58 @@ static int rk_crypto_probe(struct platform_device *pdev) @@ -322,84 +237,58 @@ static int rk_crypto_probe(struct platfo
goto err_crypto; goto err_crypto;
} }
@ -593,8 +583,12 @@ index e5714ef24..0e16f7358 100644
- if (IS_ERR(crypto_info->rst)) { - if (IS_ERR(crypto_info->rst)) {
- err = PTR_ERR(crypto_info->rst); - err = PTR_ERR(crypto_info->rst);
- goto err_crypto; - goto err_crypto;
- } + crypto_info->variant = of_device_get_match_data(&pdev->dev);
- + if (!crypto_info->variant) {
+ dev_err(&pdev->dev, "Missing variant\n");
+ return -EINVAL;
}
- reset_control_assert(crypto_info->rst); - reset_control_assert(crypto_info->rst);
- usleep_range(10, 20); - usleep_range(10, 20);
- reset_control_deassert(crypto_info->rst); - reset_control_deassert(crypto_info->rst);
@ -609,17 +603,19 @@ index e5714ef24..0e16f7358 100644
- if (IS_ERR(crypto_info->reg)) { - if (IS_ERR(crypto_info->reg)) {
- err = PTR_ERR(crypto_info->reg); - err = PTR_ERR(crypto_info->reg);
- goto err_crypto; - goto err_crypto;
+ crypto_info->variant = of_device_get_match_data(&pdev->dev); - }
+ if (!crypto_info->variant) { -
+ dev_err(&pdev->dev, "Missing variant\n");
+ return -EINVAL;
}
- crypto_info->aclk = devm_clk_get(&pdev->dev, "aclk"); - crypto_info->aclk = devm_clk_get(&pdev->dev, "aclk");
- if (IS_ERR(crypto_info->aclk)) { - if (IS_ERR(crypto_info->aclk)) {
- err = PTR_ERR(crypto_info->aclk); - err = PTR_ERR(crypto_info->aclk);
- goto err_crypto; - goto err_crypto;
- } - }
-
- crypto_info->hclk = devm_clk_get(&pdev->dev, "hclk");
- if (IS_ERR(crypto_info->hclk)) {
- err = PTR_ERR(crypto_info->hclk);
- goto err_crypto;
- }
+ for (i = 0; i < crypto_info->variant->num_instance; i++) { + for (i = 0; i < crypto_info->variant->num_instance; i++) {
+ crypto_info->rki[i].reg = devm_platform_ioremap_resource(pdev, i); + crypto_info->rki[i].reg = devm_platform_ioremap_resource(pdev, i);
+ if (IS_ERR(crypto_info->rki[i].reg)) { + if (IS_ERR(crypto_info->rki[i].reg)) {
@ -633,20 +629,15 @@ index e5714ef24..0e16f7358 100644
+ goto err_crypto; + goto err_crypto;
+ } + }
- crypto_info->hclk = devm_clk_get(&pdev->dev, "hclk");
- if (IS_ERR(crypto_info->hclk)) {
- err = PTR_ERR(crypto_info->hclk);
- goto err_crypto;
- }
+ err = devm_request_irq(&pdev->dev, crypto_info->rki[i].irq,
+ rk_crypto_irq_handle, IRQF_SHARED,
+ "rk-crypto", pdev);
- crypto_info->sclk = devm_clk_get(&pdev->dev, "sclk"); - crypto_info->sclk = devm_clk_get(&pdev->dev, "sclk");
- if (IS_ERR(crypto_info->sclk)) { - if (IS_ERR(crypto_info->sclk)) {
- err = PTR_ERR(crypto_info->sclk); - err = PTR_ERR(crypto_info->sclk);
- goto err_crypto; - goto err_crypto;
- } - }
+ err = devm_request_irq(&pdev->dev, crypto_info->rki[i].irq,
+ rk_crypto_irq_handle, IRQF_SHARED,
+ "rk-crypto", pdev);
+
+ if (err) { + if (err) {
+ dev_err(&pdev->dev, "irq request failed.\n"); + dev_err(&pdev->dev, "irq request failed.\n");
+ goto err_crypto; + goto err_crypto;
@ -706,7 +697,7 @@ index e5714ef24..0e16f7358 100644
err = rk_crypto_register(crypto_info); err = rk_crypto_register(crypto_info);
if (err) { if (err) {
@@ -407,23 +296,40 @@ static int rk_crypto_probe(struct platform_device *pdev) @@ -407,23 +296,40 @@ static int rk_crypto_probe(struct platfo
goto err_register_alg; goto err_register_alg;
} }
@ -751,7 +742,7 @@ index e5714ef24..0e16f7358 100644
return 0; return 0;
} }
@@ -432,6 +338,7 @@ static struct platform_driver crypto_driver = { @@ -432,6 +338,7 @@ static struct platform_driver crypto_dri
.remove = rk_crypto_remove, .remove = rk_crypto_remove,
.driver = { .driver = {
.name = "rk3288-crypto", .name = "rk3288-crypto",
@ -766,8 +757,6 @@ index e5714ef24..0e16f7358 100644
-MODULE_LICENSE("GPL"); -MODULE_LICENSE("GPL");
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
\ No newline at end of file \ No newline at end of file
diff --git a/drivers/crypto/rockchip/rk3288_crypto.h b/drivers/crypto/rockchip/rk3288_crypto.h
index 18e2b3f29..52bfb9b19 100644
--- a/drivers/crypto/rockchip/rk3288_crypto.h --- a/drivers/crypto/rockchip/rk3288_crypto.h
+++ b/drivers/crypto/rockchip/rk3288_crypto.h +++ b/drivers/crypto/rockchip/rk3288_crypto.h
@@ -5,12 +5,19 @@ @@ -5,12 +5,19 @@
@ -928,15 +917,13 @@ index 18e2b3f29..52bfb9b19 100644
}; };
extern struct rk_crypto_tmp rk_ecb_aes_alg; extern struct rk_crypto_tmp rk_ecb_aes_alg;
@@ -273,4 +274,4 @@ extern struct rk_crypto_tmp rk_ahash_sha1; @@ -273,4 +274,4 @@ extern struct rk_crypto_tmp rk_ahash_sha
extern struct rk_crypto_tmp rk_ahash_sha256; extern struct rk_crypto_tmp rk_ahash_sha256;
extern struct rk_crypto_tmp rk_ahash_md5; extern struct rk_crypto_tmp rk_ahash_md5;
-#endif -#endif
+#endif +#endif
\ No newline at end of file \ No newline at end of file
diff --git a/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c b/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c
index d0f4b2d18..6baca32f8 100644
--- a/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c --- a/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c
+++ b/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c
@@ -8,549 +8,642 @@ @@ -8,549 +8,642 @@
@ -1346,25 +1333,26 @@ index d0f4b2d18..6baca32f8 100644
- CRYPTO_WRITE(dev, RK_CRYPTO_CONF, conf_reg); - CRYPTO_WRITE(dev, RK_CRYPTO_CONF, conf_reg);
- CRYPTO_WRITE(dev, RK_CRYPTO_INTENA, - CRYPTO_WRITE(dev, RK_CRYPTO_INTENA,
- RK_CRYPTO_BCDMA_ERR_ENA | RK_CRYPTO_BCDMA_DONE_ENA); - RK_CRYPTO_BCDMA_ERR_ENA | RK_CRYPTO_BCDMA_DONE_ENA);
-}
-
-static void crypto_dma_start(struct rk_crypto_info *dev)
-{
- CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAS, dev->addr_in);
- CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAL, dev->count / 4);
- CRYPTO_WRITE(dev, RK_CRYPTO_BTDMAS, dev->addr_out);
- CRYPTO_WRITE(dev, RK_CRYPTO_CTRL, RK_CRYPTO_BLOCK_START |
- _SBF(RK_CRYPTO_BLOCK_START, 16));
+ writel(conf_reg, reg + RK_CRYPTO_CONF); + writel(conf_reg, reg + RK_CRYPTO_CONF);
+ writel(RK_CRYPTO_BCDMA_ERR_ENA | RK_CRYPTO_BCDMA_DONE_ENA, + writel(RK_CRYPTO_BCDMA_ERR_ENA | RK_CRYPTO_BCDMA_DONE_ENA,
+ reg + RK_CRYPTO_INTENA); + reg + RK_CRYPTO_INTENA);
} }
-static int rk_set_data_start(struct rk_crypto_info *dev) -static void crypto_dma_start(struct rk_crypto_info *dev)
+static void crypto_dma_start(struct rk_crypto_info *dev, int ninst, +static void crypto_dma_start(struct rk_crypto_info *dev, int ninst,
+ struct scatterlist *sgs, + struct scatterlist *sgs,
+ struct scatterlist *sgd, unsigned int todo) + struct scatterlist *sgd, unsigned int todo)
{ {
- CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAS, dev->addr_in);
- CRYPTO_WRITE(dev, RK_CRYPTO_BRDMAL, dev->count / 4);
- CRYPTO_WRITE(dev, RK_CRYPTO_BTDMAS, dev->addr_out);
- CRYPTO_WRITE(dev, RK_CRYPTO_CTRL, RK_CRYPTO_BLOCK_START |
- _SBF(RK_CRYPTO_BLOCK_START, 16));
-}
+ void __iomem *reg = dev->rki[ninst].reg;
-static int rk_set_data_start(struct rk_crypto_info *dev)
-{
- int err; - int err;
- struct ablkcipher_request *req = - struct ablkcipher_request *req =
- ablkcipher_request_cast(dev->async_req); - ablkcipher_request_cast(dev->async_req);
@ -1382,8 +1370,7 @@ index d0f4b2d18..6baca32f8 100644
- sg_pcopy_to_buffer(dev->first, dev->src_nents, req->info, - sg_pcopy_to_buffer(dev->first, dev->src_nents, req->info,
- ivsize, dev->total - ivsize); - ivsize, dev->total - ivsize);
- } - }
+ void __iomem *reg = dev->rki[ninst].reg; -
- err = dev->load_data(dev, dev->sg_src, dev->sg_dst); - err = dev->load_data(dev, dev->sg_src, dev->sg_dst);
- if (!err) - if (!err)
- crypto_dma_start(dev); - crypto_dma_start(dev);
@ -1479,7 +1466,9 @@ index d0f4b2d18..6baca32f8 100644
+ err = -EINVAL; + err = -EINVAL;
+ goto theend_iv; + goto theend_iv;
+ } + }
+ } else { } else {
- memcpy(req->info, dev->addr_vir +
- dev->count - ivsize, ivsize);
+ err = dma_map_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); + err = dma_map_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE);
+ if (err <= 0) { + if (err <= 0) {
+ err = -EINVAL; + err = -EINVAL;
@ -1490,7 +1479,18 @@ index d0f4b2d18..6baca32f8 100644
+ err = -EINVAL; + err = -EINVAL;
+ goto theend_sgs; + goto theend_sgs;
+ } + }
+ } }
- }
-}
-
-static void rk_update_iv(struct rk_crypto_info *dev)
-{
- struct ablkcipher_request *req =
- ablkcipher_request_cast(dev->async_req);
- struct crypto_ablkcipher *tfm = crypto_ablkcipher_reqtfm(req);
- struct rk_cipher_ctx *ctx = crypto_ablkcipher_ctx(tfm);
- u32 ivsize = crypto_ablkcipher_ivsize(tfm);
- u8 *new_iv = NULL;
+ err = 0; + err = 0;
+ rk_ablk_hw_init(ctx->dev, areq); + rk_ablk_hw_init(ctx->dev, areq);
+ if (ivsize) { + if (ivsize) {
@ -1501,7 +1501,12 @@ index d0f4b2d18..6baca32f8 100644
+ } + }
+ reinit_completion(&rki->complete); + reinit_completion(&rki->complete);
+ rki->status = 0; + rki->status = 0;
+
- if (ctx->mode & RK_CRYPTO_DEC) {
- new_iv = ctx->iv;
- } else {
- new_iv = page_address(sg_page(dev->sg_dst)) +
- dev->sg_dst->offset + dev->sg_dst->length - ivsize;
+ todo = min(sg_dma_len(sgs), len); + todo = min(sg_dma_len(sgs), len);
+ len -= todo; + len -= todo;
+ crypto_dma_start(ctx->dev, 0, sgs, sgd, todo / 4); + crypto_dma_start(ctx->dev, 0, sgs, sgd, todo / 4);
@ -1514,12 +1519,10 @@ index d0f4b2d18..6baca32f8 100644
+ } + }
+ if (sgs == sgd) { + if (sgs == sgd) {
+ dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL); + dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_BIDIRECTIONAL);
} else { + } else {
- memcpy(req->info, dev->addr_vir +
- dev->count - ivsize, ivsize);
+ dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE); + dma_unmap_sg(ctx->dev->dev, sgs, 1, DMA_TO_DEVICE);
+ dma_unmap_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE); + dma_unmap_sg(ctx->dev->dev, sgd, 1, DMA_FROM_DEVICE);
} + }
+ if (rctx->mode & RK_CRYPTO_DEC) { + if (rctx->mode & RK_CRYPTO_DEC) {
+ memcpy(iv, biv, ivsize); + memcpy(iv, biv, ivsize);
+ ivtouse = iv; + ivtouse = iv;
@ -1532,22 +1535,12 @@ index d0f4b2d18..6baca32f8 100644
+ sgd = sg_next(sgd); + sgd = sg_next(sgd);
+ n++; + n++;
} }
-}
-static void rk_update_iv(struct rk_crypto_info *dev) - if (ivsize == DES_BLOCK_SIZE)
-{ - memcpy_toio(dev->reg + RK_CRYPTO_TDES_IV_0, new_iv, ivsize);
- struct ablkcipher_request *req = - else if (ivsize == AES_BLOCK_SIZE)
- ablkcipher_request_cast(dev->async_req); - memcpy_toio(dev->reg + RK_CRYPTO_AES_IV_0, new_iv, ivsize);
- struct crypto_ablkcipher *tfm = crypto_ablkcipher_reqtfm(req); -}
- struct rk_cipher_ctx *ctx = crypto_ablkcipher_ctx(tfm);
- u32 ivsize = crypto_ablkcipher_ivsize(tfm);
- u8 *new_iv = NULL;
-
- if (ctx->mode & RK_CRYPTO_DEC) {
- new_iv = ctx->iv;
- } else {
- new_iv = page_address(sg_page(dev->sg_dst)) +
- dev->sg_dst->offset + dev->sg_dst->length - ivsize;
+ if (areq->iv && ivsize > 0) { + if (areq->iv && ivsize > 0) {
+ offset = areq->cryptlen - ivsize; + offset = areq->cryptlen - ivsize;
+ if (rctx->mode & RK_CRYPTO_DEC) { + if (rctx->mode & RK_CRYPTO_DEC) {
@ -1557,18 +1550,7 @@ index d0f4b2d18..6baca32f8 100644
+ scatterwalk_map_and_copy(areq->iv, areq->dst, offset, + scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
+ ivsize, 0); + ivsize, 0);
+ } + }
} + }
- if (ivsize == DES_BLOCK_SIZE)
- memcpy_toio(dev->reg + RK_CRYPTO_TDES_IV_0, new_iv, ivsize);
- else if (ivsize == AES_BLOCK_SIZE)
- memcpy_toio(dev->reg + RK_CRYPTO_AES_IV_0, new_iv, ivsize);
-}
+theend:
+ local_bh_disable();
+ crypto_finalize_skcipher_request(engine, areq, err);
+ local_bh_enable();
+ return 0;
-/* return: -/* return:
- * true some err was occurred - * true some err was occurred
@ -1579,7 +1561,12 @@ index d0f4b2d18..6baca32f8 100644
- int err = 0; - int err = 0;
- struct ablkcipher_request *req = - struct ablkcipher_request *req =
- ablkcipher_request_cast(dev->async_req); - ablkcipher_request_cast(dev->async_req);
- +theend:
+ local_bh_disable();
+ crypto_finalize_skcipher_request(engine, areq, err);
+ local_bh_enable();
+ return 0;
- dev->unload_data(dev); - dev->unload_data(dev);
- if (!dev->aligned) { - if (!dev->aligned) {
- if (!sg_pcopy_from_buffer(req->dst, dev->dst_nents, - if (!sg_pcopy_from_buffer(req->dst, dev->dst_nents,
@ -1943,8 +1930,6 @@ index d0f4b2d18..6baca32f8 100644
-}; -};
+}; +};
\ No newline at end of file \ No newline at end of file
diff --git a/drivers/crypto/rockchip/rk3288_crypto_ahash.c b/drivers/crypto/rockchip/rk3288_crypto_ahash.c
index 6b7ecbec0..5ab588c00 100644
--- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c
+++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c
@@ -8,6 +8,8 @@ @@ -8,6 +8,8 @@
@ -2001,7 +1986,7 @@ index 6b7ecbec0..5ab588c00 100644
static int zero_message_process(struct ahash_request *req) static int zero_message_process(struct ahash_request *req)
{ {
struct crypto_ahash *tfm = crypto_ahash_reqtfm(req); struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
@@ -37,43 +77,39 @@ static int zero_message_process(struct ahash_request *req) @@ -37,43 +77,39 @@ static int zero_message_process(struct a
return 0; return 0;
} }
@ -2065,7 +2050,7 @@ index 6b7ecbec0..5ab588c00 100644
} }
static int rk_ahash_init(struct ahash_request *req) static int rk_ahash_init(struct ahash_request *req)
@@ -164,50 +200,79 @@ static int rk_ahash_export(struct ahash_request *req, void *out) @@ -164,50 +200,79 @@ static int rk_ahash_export(struct ahash_
static int rk_ahash_digest(struct ahash_request *req) static int rk_ahash_digest(struct ahash_request *req)
{ {
struct rk_ahash_ctx *tctx = crypto_tfm_ctx(req->base.tfm); struct rk_ahash_ctx *tctx = crypto_tfm_ctx(req->base.tfm);
@ -2111,15 +2096,15 @@ index 6b7ecbec0..5ab588c00 100644
+ struct rk_ahash_rctx *rctx = ahash_request_ctx(areq); + struct rk_ahash_rctx *rctx = ahash_request_ctx(areq);
+ struct rk_ahash_ctx *tctx = crypto_ahash_ctx(tfm); + struct rk_ahash_ctx *tctx = crypto_ahash_ctx(tfm);
+ int ret; + int ret;
+
+ ret = dma_map_sg(tctx->dev->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE);
+ if (ret <= 0)
+ return -EINVAL;
- err = dev->load_data(dev, dev->sg_src, NULL); - err = dev->load_data(dev, dev->sg_src, NULL);
- if (!err) - if (!err)
- crypto_ahash_dma_start(dev); - crypto_ahash_dma_start(dev);
- return err; - return err;
+ ret = dma_map_sg(tctx->dev->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE);
+ if (ret <= 0)
+ return -EINVAL;
+
+ rctx->nrsg = ret; + rctx->nrsg = ret;
+ +
+ return 0; + return 0;
@ -2173,7 +2158,7 @@ index 6b7ecbec0..5ab588c00 100644
switch (crypto_ahash_digestsize(tfm)) { switch (crypto_ahash_digestsize(tfm)) {
case SHA1_DIGEST_SIZE: case SHA1_DIGEST_SIZE:
rctx->mode = RK_CRYPTO_HASH_SHA1; rctx->mode = RK_CRYPTO_HASH_SHA1;
@@ -219,32 +284,26 @@ static int rk_ahash_start(struct rk_crypto_info *dev) @@ -219,32 +284,26 @@ static int rk_ahash_start(struct rk_cryp
rctx->mode = RK_CRYPTO_HASH_MD5; rctx->mode = RK_CRYPTO_HASH_MD5;
break; break;
default: default:
@ -2191,7 +2176,8 @@ index 6b7ecbec0..5ab588c00 100644
- int err = 0; - int err = 0;
- struct ahash_request *req = ahash_request_cast(dev->async_req); - struct ahash_request *req = ahash_request_cast(dev->async_req);
- struct crypto_ahash *tfm; - struct crypto_ahash *tfm;
- + rk_ahash_reg_init(areq);
- dev->unload_data(dev); - dev->unload_data(dev);
- if (dev->left_bytes) { - if (dev->left_bytes) {
- if (dev->aligned) { - if (dev->aligned) {
@ -2202,8 +2188,6 @@ index 6b7ecbec0..5ab588c00 100644
- goto out_rx; - goto out_rx;
- } - }
- dev->sg_src = sg_next(dev->sg_src); - dev->sg_src = sg_next(dev->sg_src);
+ rk_ahash_reg_init(areq);
+
+ while (sg) { + while (sg) {
+ reinit_completion(&rki->complete); + reinit_completion(&rki->complete);
+ rki->status = 0; + rki->status = 0;
@ -2223,21 +2207,20 @@ index 6b7ecbec0..5ab588c00 100644
/* /*
* it will take some time to process date after last dma * it will take some time to process date after last dma
* transmission. * transmission.
@@ -255,18 +314,20 @@ static int rk_ahash_crypto_rx(struct rk_crypto_info *dev) @@ -255,18 +314,20 @@ static int rk_ahash_crypto_rx(struct rk_
* efficiency, and make it response quickly when dma * efficiency, and make it response quickly when dma
* complete. * complete.
*/ */
- while (!CRYPTO_READ(dev, RK_CRYPTO_HASH_STS)) - while (!CRYPTO_READ(dev, RK_CRYPTO_HASH_STS))
- udelay(10); - udelay(10);
- + while (!readl(reg + RK_CRYPTO_HASH_STS))
+ udelay(10);
- tfm = crypto_ahash_reqtfm(req); - tfm = crypto_ahash_reqtfm(req);
- memcpy_fromio(req->result, dev->reg + RK_CRYPTO_HASH_DOUT_0, - memcpy_fromio(req->result, dev->reg + RK_CRYPTO_HASH_DOUT_0,
- crypto_ahash_digestsize(tfm)); - crypto_ahash_digestsize(tfm));
- dev->complete(dev->async_req, 0); - dev->complete(dev->async_req, 0);
- tasklet_schedule(&dev->queue_task); - tasklet_schedule(&dev->queue_task);
+ while (!readl(reg + RK_CRYPTO_HASH_STS))
+ udelay(10);
+
+ for (i = 0; i < crypto_ahash_digestsize(tfm) / 4; i++) { + for (i = 0; i < crypto_ahash_digestsize(tfm) / 4; i++) {
+ v = readl(reg + RK_CRYPTO_HASH_DOUT_0 + i * 4); + v = readl(reg + RK_CRYPTO_HASH_DOUT_0 + i * 4);
+ put_unaligned_le32(v, areq->result + i * 4); + put_unaligned_le32(v, areq->result + i * 4);
@ -2254,7 +2237,7 @@ index 6b7ecbec0..5ab588c00 100644
} }
static int rk_cra_hash_init(struct crypto_tfm *tfm) static int rk_cra_hash_init(struct crypto_tfm *tfm)
@@ -276,18 +337,11 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) @@ -276,18 +337,11 @@ static int rk_cra_hash_init(struct crypt
struct ahash_alg *alg = __crypto_ahash_alg(tfm->__crt_alg); struct ahash_alg *alg = __crypto_ahash_alg(tfm->__crt_alg);
const char *alg_name = crypto_tfm_alg_name(tfm); const char *alg_name = crypto_tfm_alg_name(tfm);
@ -2274,7 +2257,7 @@ index 6b7ecbec0..5ab588c00 100644
/* for fallback */ /* for fallback */
tctx->fallback_tfm = crypto_alloc_ahash(alg_name, 0, tctx->fallback_tfm = crypto_alloc_ahash(alg_name, 0,
@@ -296,23 +350,36 @@ static int rk_cra_hash_init(struct crypto_tfm *tfm) @@ -296,23 +350,36 @@ static int rk_cra_hash_init(struct crypt
dev_err(tctx->dev->dev, "Could not load fallback driver.\n"); dev_err(tctx->dev->dev, "Could not load fallback driver.\n");
return PTR_ERR(tctx->fallback_tfm); return PTR_ERR(tctx->fallback_tfm);
} }
@ -2340,8 +2323,6 @@ index 6b7ecbec0..5ab588c00 100644
-}; -};
+}; +};
\ No newline at end of file \ No newline at end of file
diff --git a/include/dt-bindings/clock/rk3399-cru.h b/include/dt-bindings/clock/rk3399-cru.h
index 44e0a319f..39169d94a 100644
--- a/include/dt-bindings/clock/rk3399-cru.h --- a/include/dt-bindings/clock/rk3399-cru.h
+++ b/include/dt-bindings/clock/rk3399-cru.h +++ b/include/dt-bindings/clock/rk3399-cru.h
@@ -547,8 +547,8 @@ @@ -547,8 +547,8 @@
@ -2364,6 +2345,3 @@ index 44e0a319f..39169d94a 100644
#define SRST_P_PERILP1_SGRF 182 #define SRST_P_PERILP1_SGRF 182
#define SRST_P_PERILP1_GRF 183 #define SRST_P_PERILP1_GRF 183
#define SRST_CRYPTO1_S 184 #define SRST_CRYPTO1_S 184
--
2.32.0

View File

@ -7,8 +7,6 @@ Subject: [PATCH] crypto: Enable 2 encryption and decryption for rk3399
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 12 ++++++++++++ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+) 1 file changed, 12 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
index 33fd9e3d7..da0ae2165 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -550,6 +550,18 @@ @@ -550,6 +550,18 @@
@ -30,6 +28,3 @@ index 33fd9e3d7..da0ae2165 100644
i2c1: i2c@ff110000 { i2c1: i2c@ff110000 {
compatible = "rockchip,rk3399-i2c"; compatible = "rockchip,rk3399-i2c";
reg = <0x0 0xff110000 0x0 0x1000>; reg = <0x0 0xff110000 0x0 0x1000>;
--
2.32.0