lkml.org 
[lkml]   [2023]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/6] mailbox: tegra: add support for Tegra264
    Date
    From: Stefan Kristiansson <stefank@nvidia.com>

    Tegra264 has a slightly different doorbell register layout than
    previous chips.

    Signed-off-by: Stefan Kristiansson <stefank@nvidia.com>
    Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
    ---
    drivers/mailbox/tegra-hsp.c | 16 ++++++++++++++--
    1 file changed, 14 insertions(+), 2 deletions(-)

    diff --git a/drivers/mailbox/tegra-hsp.c b/drivers/mailbox/tegra-hsp.c
    index 573481e436f5..7f98e7436d94 100644
    --- a/drivers/mailbox/tegra-hsp.c
    +++ b/drivers/mailbox/tegra-hsp.c
    @@ -1,6 +1,6 @@
    // SPDX-License-Identifier: GPL-2.0-only
    /*
    - * Copyright (c) 2016-2018, NVIDIA CORPORATION. All rights reserved.
    + * Copyright (c) 2016-2023, NVIDIA CORPORATION. All rights reserved.
    */

    #include <linux/delay.h>
    @@ -97,6 +97,7 @@ struct tegra_hsp_soc {
    const struct tegra_hsp_db_map *map;
    bool has_per_mb_ie;
    bool has_128_bit_mb;
    + unsigned int reg_stride;
    };

    struct tegra_hsp {
    @@ -279,7 +280,7 @@ tegra_hsp_doorbell_create(struct tegra_hsp *hsp, const char *name,
    return ERR_PTR(-ENOMEM);

    offset = (1 + (hsp->num_sm / 2) + hsp->num_ss + hsp->num_as) * SZ_64K;
    - offset += index * 0x100;
    + offset += index * hsp->soc->reg_stride;

    db->channel.regs = hsp->regs + offset;
    db->channel.hsp = hsp;
    @@ -916,24 +917,35 @@ static const struct tegra_hsp_soc tegra186_hsp_soc = {
    .map = tegra186_hsp_db_map,
    .has_per_mb_ie = false,
    .has_128_bit_mb = false,
    + .reg_stride = 0x100,
    };

    static const struct tegra_hsp_soc tegra194_hsp_soc = {
    .map = tegra186_hsp_db_map,
    .has_per_mb_ie = true,
    .has_128_bit_mb = false,
    + .reg_stride = 0x100,
    };

    static const struct tegra_hsp_soc tegra234_hsp_soc = {
    .map = tegra186_hsp_db_map,
    .has_per_mb_ie = false,
    .has_128_bit_mb = true,
    + .reg_stride = 0x100,
    +};
    +
    +static const struct tegra_hsp_soc tegra264_hsp_soc = {
    + .map = tegra186_hsp_db_map,
    + .has_per_mb_ie = false,
    + .has_128_bit_mb = true,
    + .reg_stride = 0x1000,
    };

    static const struct of_device_id tegra_hsp_match[] = {
    { .compatible = "nvidia,tegra186-hsp", .data = &tegra186_hsp_soc },
    { .compatible = "nvidia,tegra194-hsp", .data = &tegra194_hsp_soc },
    { .compatible = "nvidia,tegra234-hsp", .data = &tegra234_hsp_soc },
    + { .compatible = "nvidia,tegra264-hsp", .data = &tegra264_hsp_soc },
    { }
    };

    --
    2.34.1
    \
     
     \ /
      Last update: 2023-05-10 13:37    [W:3.303 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site