get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2216490/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2216490,
    "url": "http://patchwork.ozlabs.org/api/patches/2216490/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/patch/20260326152656.14030-9-adilov@disroot.org/",
    "project": {
        "id": 35,
        "url": "http://patchwork.ozlabs.org/api/projects/35/?format=api",
        "name": "Linux I2C development",
        "link_name": "linux-i2c",
        "list_id": "linux-i2c.vger.kernel.org",
        "list_email": "linux-i2c@vger.kernel.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260326152656.14030-9-adilov@disroot.org>",
    "list_archive_url": null,
    "date": "2026-03-26T15:26:56",
    "name": "[v5,8/8] i2c: rtl9300: add RTL9607C i2c controller support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "0374add793ff7170840b1551cec3672ebb1c3439",
    "submitter": {
        "id": 92795,
        "url": "http://patchwork.ozlabs.org/api/people/92795/?format=api",
        "name": "Rustam Adilov",
        "email": "adilov@disroot.org"
    },
    "delegate": {
        "id": 149066,
        "url": "http://patchwork.ozlabs.org/api/users/149066/?format=api",
        "username": "cazzacarna",
        "first_name": "Andi",
        "last_name": "Shyti",
        "email": "andi.shyti@kernel.org"
    },
    "mbox": "http://patchwork.ozlabs.org/project/linux-i2c/patch/20260326152656.14030-9-adilov@disroot.org/mbox/",
    "series": [
        {
            "id": 497610,
            "url": "http://patchwork.ozlabs.org/api/series/497610/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/linux-i2c/list/?series=497610",
            "date": "2026-03-26T15:26:49",
            "name": "i2c: rtl9300: support for RTL9607C I2C controller",
            "version": 5,
            "mbox": "http://patchwork.ozlabs.org/series/497610/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2216490/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2216490/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <linux-i2c+bounces-16812-incoming=patchwork.ozlabs.org@vger.kernel.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "linux-i2c@vger.kernel.org"
        ],
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=disroot.org header.i=@disroot.org header.a=rsa-sha256\n header.s=mail header.b=dKlkU9Fs;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-i2c+bounces-16812-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)",
            "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org\n header.b=\"dKlkU9Fs\"",
            "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=178.21.23.139",
            "smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=disroot.org",
            "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=disroot.org"
        ],
        "Received": [
            "from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fhSjR341Sz1y1G\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 27 Mar 2026 02:43:23 +1100 (AEDT)",
            "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 7C2B43019123\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 15:30:40 +0000 (UTC)",
            "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 7BFFF411603;\n\tThu, 26 Mar 2026 15:27:49 +0000 (UTC)",
            "from layka.disroot.org (layka.disroot.org [178.21.23.139])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id B1F9D410D0C;\n\tThu, 26 Mar 2026 15:27:47 +0000 (UTC)",
            "from [127.0.0.1] (localhost [127.0.0.1])\n\tby disroot.org (Postfix) with ESMTP id 6141726452;\n\tThu, 26 Mar 2026 16:27:46 +0100 (CET)",
            "from layka.disroot.org ([127.0.0.1])\n by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id 3h6aOJDXUMj7; Thu, 26 Mar 2026 16:27:45 +0100 (CET)"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774538869; cv=none;\n b=NjXd+bw+BpTI0vySWHuENRTR2fb8jmadrG0Nc1Qkgaj3qnVN5p8gNKg6Tqkn8kJU/8vBzvSGx67uTwvbhyewSXbiU2OmmjazZxgCrz/vQoh1Neyh1sTgeGNA/yoOVZELusIADb7AUwXeDQm6NwIRbI5Ay5g3Fa0Ts19qYpQ0G0k=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774538869; c=relaxed/simple;\n\tbh=oxOd6xrPkNkZz6QA/SUlqhCBJiX5nvMMbOMTlIgZTp8=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=SZy9fLQKsq5G+bHeqvShiJrEQlLhQ/I8yd0uz0HLdkHL/MYlwXnABeD+HIlIPPQwqdPhCPRf6GRYYYggcGiCKAqfDrzvHpxXGfDhzsuJoaYJZrXHPV9nSzjYam8YLQ7QEnVilbNwrSQbPEmwWIt01007dH5emG5QUm5h4u2iweQ=",
        "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=disroot.org;\n spf=pass smtp.mailfrom=disroot.org;\n dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org\n header.b=dKlkU9Fs; arc=none smtp.client-ip=178.21.23.139",
        "X-Virus-Scanned": "SPAM Filter at disroot.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail;\n\tt=1774538865; bh=oxOd6xrPkNkZz6QA/SUlqhCBJiX5nvMMbOMTlIgZTp8=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References;\n\tb=dKlkU9Fssx0Jr3ukCF17/A/0betPxNHrNeCa6qjpcbcXOkp3SnvSoq2xUISMdpn74\n\t m+h/5OxNEr8pL3wB+LDDS0tj9LWs6g31A0lWWeD7BQneuVVKp9X7+mNSr93TX8svEK\n\t BGvwrCdFWqEaWQ5r5BKF6V6nfglvF6nvqqni8/y3SH2rTLcKFH6KYakZq0gcS1GOXI\n\t EbKQF0Jml2/iqoErfH/5lCHZCfovtu+joo3RGEo2Z1i85qnjy0rIdBWNnoqZuALaSL\n\t 2gE/b6vzEOoWM17t8PFCRgRA1WMmf7lptlq0xERn9oWCd4T4HekoKVpm+qhw3c9a9w\n\t DwGLT/IVG8aWg==",
        "From": "Rustam Adilov <adilov@disroot.org>",
        "To": "Chris Packham <chris.packham@alliedtelesis.co.nz>,\n\tAndi Shyti <andi.shyti@kernel.org>,\n\tRob Herring <robh@kernel.org>,\n\tKrzysztof Kozlowski <krzk+dt@kernel.org>,\n\tConor Dooley <conor+dt@kernel.org>,\n\tlinux-i2c@vger.kernel.org,\n\tdevicetree@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org",
        "Cc": "Rustam Adilov <adilov@disroot.org>",
        "Subject": "[PATCH v5 8/8] i2c: rtl9300: add RTL9607C i2c controller support",
        "Date": "Thu, 26 Mar 2026 20:26:56 +0500",
        "Message-ID": "<20260326152656.14030-9-adilov@disroot.org>",
        "In-Reply-To": "<20260326152656.14030-1-adilov@disroot.org>",
        "References": "<20260326152656.14030-1-adilov@disroot.org>",
        "Precedence": "bulk",
        "X-Mailing-List": "linux-i2c@vger.kernel.org",
        "List-Id": "<linux-i2c.vger.kernel.org>",
        "List-Subscribe": "<mailto:linux-i2c+subscribe@vger.kernel.org>",
        "List-Unsubscribe": "<mailto:linux-i2c+unsubscribe@vger.kernel.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit"
    },
    "content": "Add support for the internal I2C controllers of RTL9607C series based\nSoCs. Add register definitions, chip-specific functions and macros too.\n\nMake use of the clk introduced from the previous patch to get the clk_div\nvalue and use it during the rtl9607c channel configuration.\n\nIntroduce a new EXT_SCK_5MS field to the reg fields struct which is going\nto be initialized by rtl9607c init function at the end of the probe.\n\nThis patch depends on all the previous patches in this patch series.\n\nReviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>\nSigned-off-by: Rustam Adilov <adilov@disroot.org>\n---\n drivers/i2c/busses/i2c-rtl9300.c | 70 ++++++++++++++++++++++++++++++++\n 1 file changed, 70 insertions(+)",
    "diff": "diff --git a/drivers/i2c/busses/i2c-rtl9300.c b/drivers/i2c/busses/i2c-rtl9300.c\nindex b718b74afe0d..8cedffbb2964 100644\n--- a/drivers/i2c/busses/i2c-rtl9300.c\n+++ b/drivers/i2c/busses/i2c-rtl9300.c\n@@ -57,6 +57,7 @@ enum rtl9300_i2c_reg_fields {\n \tF_SDA_SEL,\n \tF_BUSY,\n \tF_CLK_DIV,\n+\tF_EXT_SCK_5MS,\n \n \t/* keep last */\n \tF_NUM_FIELDS\n@@ -77,8 +78,10 @@ struct rtl9300_i2c_drv_data {\n \n #define RTL9300_I2C_MUX_NCHAN\t8\n #define RTL9310_I2C_MUX_NCHAN\t12\n+#define RTL9607_I2C_MUX_NCHAN\t1\n \n #define RTL9300_I2C_MAX_DATA_LEN\t16\n+#define RTL9607_I2C_MAX_DATA_LEN\t4\n \n struct rtl9300_i2c {\n \tstruct regmap *regmap;\n@@ -127,6 +130,14 @@ struct rtl9300_i2c_xfer {\n #define RTL9310_I2C_MST_MEMADDR_CTRL\t\t\t0x4\n #define RTL9310_I2C_MST_DATA_CTRL\t\t\t0x8\n \n+#define RTL9607_I2C_CONFIG\t\t\t\t0x22f50\n+#define RTL9607_IO_MODE_EN\t\t\t\t0x23014\n+#define RTL9607_I2C_IND_WD\t\t\t\t0x0\n+#define RTL9607_I2C_IND_ADR\t\t\t\t0x8\n+#define RTL9607_I2C_IND_CMD\t\t\t\t0x10\n+#define RTL9607_I2C_IND_RD\t\t\t\t0x18\n+#define RTL9607_REG_ADDR_8BIT_LEN\t\t\t0\n+\n static int rtl9300_i2c_reg_addr_set(struct rtl9300_i2c *i2c, u32 reg, u16 len)\n {\n \tint ret;\n@@ -178,6 +189,27 @@ static int rtl9300_i2c_config_chan(struct rtl9300_i2c *i2c, struct rtl9300_i2c_c\n \treturn 0;\n }\n \n+static int rtl9607_i2c_config_chan(struct rtl9300_i2c *i2c, struct rtl9300_i2c_chan *chan)\n+{\n+\tconst struct rtl9300_i2c_drv_data *drv_data;\n+\tint ret;\n+\n+\tif (i2c->sda_num == chan->sda_num)\n+\t\treturn 0;\n+\n+\tret = regmap_field_write(i2c->fields[F_CLK_DIV], chan->clk_div);\n+\tif (ret)\n+\t\treturn ret;\n+\n+\tdrv_data = device_get_match_data(i2c->dev);\n+\tret = drv_data->select_scl(i2c, i2c->scl_num);\n+\tif (ret)\n+\t\treturn ret;\n+\n+\ti2c->sda_num = chan->sda_num;\n+\treturn 0;\n+}\n+\n static void rtl9300_i2c_config_clock(u32 clock_freq, struct rtl9300_i2c_chan *chan)\n {\n \tstruct rtl9300_i2c *i2c = chan->i2c;\n@@ -202,6 +234,13 @@ static void rtl9300_i2c_config_clock(u32 clock_freq, struct rtl9300_i2c_chan *ch\n \t}\n }\n \n+static void rtl9607_i2c_config_clock(u32 clock_freq, struct rtl9300_i2c_chan *chan)\n+{\n+\tstruct rtl9300_i2c *i2c = chan->i2c;\n+\n+\tchan->clk_div = clk_get_rate(i2c->clk) / clock_freq - 1;\n+}\n+\n static int rtl9300_i2c_read(struct rtl9300_i2c *i2c, u8 *buf, u8 len)\n {\n \tu32 vals[4] = {};\n@@ -422,6 +461,11 @@ static int rtl9300_i2c_init(struct rtl9300_i2c *i2c)\n \treturn regmap_field_write(i2c->fields[F_RD_MODE], 0);\n }\n \n+static int rtl9607_i2c_init(struct rtl9300_i2c *i2c)\n+{\n+\treturn regmap_field_write(i2c->fields[F_EXT_SCK_5MS], 1);\n+}\n+\n static int rtl9300_i2c_probe(struct platform_device *pdev)\n {\n \tstruct device *dev = &pdev->dev;\n@@ -574,6 +618,31 @@ static const struct rtl9300_i2c_drv_data rtl9310_i2c_drv_data = {\n \t.reg_addr_8bit_len = RTL9300_REG_ADDR_8BIT_LEN,\n };\n \n+static const struct rtl9300_i2c_drv_data rtl9607_i2c_drv_data = {\n+\t.field_desc = {\n+\t\t[F_SCL_SEL]\t\t= GLB_REG_FIELD(RTL9607_IO_MODE_EN, 13, 14),\n+\t\t[F_EXT_SCK_5MS]\t\t= MST_REG_FIELD(RTL9607_I2C_CONFIG, 26, 26),\n+\t\t[F_DEV_ADDR]\t\t= MST_REG_FIELD(RTL9607_I2C_CONFIG, 14, 20),\n+\t\t[F_MEM_ADDR_WIDTH]\t= MST_REG_FIELD(RTL9607_I2C_CONFIG, 12, 13),\n+\t\t[F_DATA_WIDTH]\t\t= MST_REG_FIELD(RTL9607_I2C_CONFIG, 10, 11),\n+\t\t[F_CLK_DIV]\t\t= MST_REG_FIELD(RTL9607_I2C_CONFIG, 0, 9),\n+\t\t[F_I2C_FAIL]\t\t= MST_REG_FIELD(RTL9607_I2C_IND_CMD, 3, 3),\n+\t\t[F_BUSY]\t\t= MST_REG_FIELD(RTL9607_I2C_IND_CMD, 2, 2),\n+\t\t[F_RWOP]\t\t= MST_REG_FIELD(RTL9607_I2C_IND_CMD, 1, 1),\n+\t\t[F_I2C_TRIG]\t\t= MST_REG_FIELD(RTL9607_I2C_IND_CMD, 0, 0),\n+\t\t[F_MEM_ADDR]\t\t= MST_REG_FIELD(RTL9607_I2C_IND_ADR, 0, 31),\n+\t},\n+\t.select_scl = rtl9310_i2c_select_scl,\n+\t.config_chan = rtl9607_i2c_config_chan,\n+\t.config_clock = rtl9607_i2c_config_clock,\n+\t.misc_init = rtl9607_i2c_init,\n+\t.rd_reg = RTL9607_I2C_IND_RD,\n+\t.wd_reg = RTL9607_I2C_IND_WD,\n+\t.max_nchan = RTL9607_I2C_MUX_NCHAN,\n+\t.max_data_len = RTL9607_I2C_MAX_DATA_LEN,\n+\t.reg_addr_8bit_len = RTL9607_REG_ADDR_8BIT_LEN,\n+};\n+\n static const struct of_device_id i2c_rtl9300_dt_ids[] = {\n \t{ .compatible = \"realtek,rtl9301-i2c\", .data = (void *) &rtl9300_i2c_drv_data },\n \t{ .compatible = \"realtek,rtl9302b-i2c\", .data = (void *) &rtl9300_i2c_drv_data },\n@@ -583,6 +652,7 @@ static const struct of_device_id i2c_rtl9300_dt_ids[] = {\n \t{ .compatible = \"realtek,rtl9311-i2c\", .data = (void *) &rtl9310_i2c_drv_data },\n \t{ .compatible = \"realtek,rtl9312-i2c\", .data = (void *) &rtl9310_i2c_drv_data },\n \t{ .compatible = \"realtek,rtl9313-i2c\", .data = (void *) &rtl9310_i2c_drv_data },\n+\t{ .compatible = \"realtek,rtl9607-i2c\", .data = (void *) &rtl9607_i2c_drv_data },\n \t{}\n };\n MODULE_DEVICE_TABLE(of, i2c_rtl9300_dt_ids);\n",
    "prefixes": [
        "v5",
        "8/8"
    ]
}