lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 15 Dec 2022 12:25:54 +0100
From:   Robert Foss <robert.foss@...aro.org>
To:     Paul Cercueil <paul@...pouillou.net>
Cc:     Phong LE <ple@...libre.com>,
        Neil Armstrong <neil.armstrong@...aro.org>,
        Andrzej Hajda <andrzej.hajda@...el.com>,
        Laurent Pinchart <Laurent.pinchart@...asonboard.com>,
        Jonas Karlman <jonas@...boo.se>,
        Jernej Skrabec <jernej.skrabec@...il.com>,
        David Airlie <airlied@...il.com>,
        Daniel Vetter <daniel@...ll.ch>,
        Rob Herring <robh+dt@...nel.org>,
        Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
        list@...ndingux.net, dri-devel@...ts.freedesktop.org,
        devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 09/10] drm: bridge: it66121: Move VID/PID to new
 it66121_chip_info structure

On Wed, 14 Dec 2022 at 14:01, Paul Cercueil <paul@...pouillou.net> wrote:
>
> This will make it easier later to introduce support for new chips in
> this driver.
>
> Signed-off-by: Paul Cercueil <paul@...pouillou.net>
> ---
>  drivers/gpu/drm/bridge/ite-it66121.c | 27 +++++++++++++++------------
>  1 file changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c
> index 7972003d4776..43b027b85b8e 100644
> --- a/drivers/gpu/drm/bridge/ite-it66121.c
> +++ b/drivers/gpu/drm/bridge/ite-it66121.c
> @@ -35,10 +35,6 @@
>  #define IT66121_DEVICE_ID0_REG                 0x02
>  #define IT66121_DEVICE_ID1_REG                 0x03
>
> -#define IT66121_VENDOR_ID0                     0x54
> -#define IT66121_VENDOR_ID1                     0x49
> -#define IT66121_DEVICE_ID0                     0x12
> -#define IT66121_DEVICE_ID1                     0x06
>  #define IT66121_REVISION_MASK                  GENMASK(7, 4)
>  #define IT66121_DEVICE_ID1_MASK                        GENMASK(3, 0)
>
> @@ -286,13 +282,12 @@
>  #define IT66121_AUD_SWL_16BIT                  0x2
>  #define IT66121_AUD_SWL_NOT_INDICATED          0x0
>
> -#define IT66121_VENDOR_ID0                     0x54
> -#define IT66121_VENDOR_ID1                     0x49
> -#define IT66121_DEVICE_ID0                     0x12
> -#define IT66121_DEVICE_ID1                     0x06
> -#define IT66121_DEVICE_MASK                    0x0F
>  #define IT66121_AFE_CLK_HIGH                   80000 /* Khz */
>
> +struct it66121_chip_info {
> +       u16 vid, pid;
> +};
> +
>  struct it66121_ctx {
>         struct regmap *regmap;
>         struct drm_bridge bridge;
> @@ -311,6 +306,7 @@ struct it66121_ctx {
>                 u8 swl;
>                 bool auto_cts;
>         } audio;
> +       const struct it66121_chip_info *info;
>  };
>
>  static const struct regmap_range_cfg it66121_regmap_banks[] = {
> @@ -1451,6 +1447,7 @@ static const char * const it66121_supplies[] = {
>
>  static int it66121_probe(struct i2c_client *client)
>  {
> +       const struct i2c_device_id *id = i2c_client_get_device_id(client);
>         u32 revision_id, vendor_ids[2] = { 0 }, device_ids[2] = { 0 };
>         struct device_node *ep;
>         int ret;
> @@ -1472,6 +1469,7 @@ static int it66121_probe(struct i2c_client *client)
>
>         ctx->dev = dev;
>         ctx->client = client;
> +       ctx->info = (const struct it66121_chip_info *) id->driver_data;
>
>         of_property_read_u32(ep, "bus-width", &ctx->bus_width);
>         of_node_put(ep);
> @@ -1523,8 +1521,8 @@ static int it66121_probe(struct i2c_client *client)
>         revision_id = FIELD_GET(IT66121_REVISION_MASK, device_ids[1]);
>         device_ids[1] &= IT66121_DEVICE_ID1_MASK;
>
> -       if (vendor_ids[0] != IT66121_VENDOR_ID0 || vendor_ids[1] != IT66121_VENDOR_ID1 ||
> -           device_ids[0] != IT66121_DEVICE_ID0 || device_ids[1] != IT66121_DEVICE_ID1) {
> +       if ((vendor_ids[1] << 8 | vendor_ids[0]) != ctx->info->vid ||
> +           (device_ids[1] << 8 | device_ids[0]) != ctx->info->pid) {
>                 return -ENODEV;
>         }
>
> @@ -1563,8 +1561,13 @@ static const struct of_device_id it66121_dt_match[] = {
>  };
>  MODULE_DEVICE_TABLE(of, it66121_dt_match);
>
> +static const struct it66121_chip_info it66121_chip_info = {
> +       .vid = 0x4954,
> +       .pid = 0x0612,
> +};
> +
>  static const struct i2c_device_id it66121_id[] = {
> -       { "it66121", 0 },
> +       { "it66121", (kernel_ulong_t) &it66121_chip_info },
>         { }
>  };
>  MODULE_DEVICE_TABLE(i2c, it66121_id);
> --
> 2.35.1
>

Reviewed-by: Robert Foss <robert.foss@...aro.org>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ