-LINUX_VERSION-6.1 = .62
-LINUX_KERNEL_HASH-6.1.62 = b9fd616facd6becfceef88b9be718d0f16625cab3fe81d11384802a7091e85ec
+LINUX_VERSION-6.1 = .63
+LINUX_KERNEL_HASH-6.1.63 = c29d043b01dd4fcc61a24fd027c5c7912b15b1f10d8e3c83a0cb935885f0758d
+ while (!num_words) {
+ if (!wait || !retries)
return 0;
-- hwrng_msleep(rng, 1000);
+- hwrng_yield(rng);
+ retries--;
+ usleep_range((u32)RNG_US_PER_WORD,
-+ (u32)RNG_US_PER_WORD * RNG_FIFO_WORDS);
++ (u32)RNG_US_PER_WORD * RNG_FIFO_WORDS);
+ num_words = rng_readl(priv, RNG_STATUS) >> 24;
}
#include <linux/clockchips.h>
#include <linux/clocksource.h>
#include <linux/clocksource_ids.h>
-@@ -1028,6 +1029,16 @@ static void __init arch_timer_of_configu
+@@ -1029,6 +1030,16 @@ static void __init arch_timer_of_configu
if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate))
arch_timer_rate = rate;
--- a/drivers/leds/leds-turris-omnia.c
+++ b/drivers/leds/leds-turris-omnia.c
-@@ -166,7 +166,7 @@ static ssize_t brightness_show(struct de
+@@ -194,7 +194,7 @@ static ssize_t brightness_show(struct de
if (ret < 0)
return ret;
+++ /dev/null
-From 8f3d612a5c949489b2860b74ff34c5914a9216dd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
-Date: Wed, 2 Aug 2023 18:07:43 +0200
-Subject: [PATCH 2/6] leds: turris-omnia: Drop unnecessary mutex locking
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Do not lock driver mutex in the global LED panel brightness sysfs
-accessors brightness_show() and brightness_store().
-
-The mutex locking is unnecessary here. The I2C transfers are guarded by
-I2C core locking mechanism, and the LED commands itself do not interfere
-with other commands.
-
-Fixes: 089381b27abe ("leds: initial support for Turris Omnia LEDs")
-Signed-off-by: Marek Behún <kabel@kernel.org>
-Reviewed-by: Lee Jones <lee@kernel.org>
-Link: https://lore.kernel.org/r/20230802160748.11208-2-kabel@kernel.org
-Signed-off-by: Lee Jones <lee@kernel.org>
----
- drivers/leds/leds-turris-omnia.c | 11 +----------
- 1 file changed, 1 insertion(+), 10 deletions(-)
-
---- a/drivers/leds/leds-turris-omnia.c
-+++ b/drivers/leds/leds-turris-omnia.c
-@@ -156,12 +156,9 @@ static ssize_t brightness_show(struct de
- char *buf)
- {
- struct i2c_client *client = to_i2c_client(dev);
-- struct omnia_leds *leds = i2c_get_clientdata(client);
- int ret;
-
-- mutex_lock(&leds->lock);
- ret = i2c_smbus_read_byte_data(client, CMD_LED_GET_BRIGHTNESS);
-- mutex_unlock(&leds->lock);
-
- if (ret < 0)
- return ret;
-@@ -173,7 +170,6 @@ static ssize_t brightness_store(struct d
- const char *buf, size_t count)
- {
- struct i2c_client *client = to_i2c_client(dev);
-- struct omnia_leds *leds = i2c_get_clientdata(client);
- unsigned long brightness;
- int ret;
-
-@@ -183,15 +179,10 @@ static ssize_t brightness_store(struct d
- if (brightness > 100)
- return -EINVAL;
-
-- mutex_lock(&leds->lock);
- ret = i2c_smbus_write_byte_data(client, CMD_LED_SET_BRIGHTNESS,
- (u8)brightness);
-- mutex_unlock(&leds->lock);
-
-- if (ret < 0)
-- return ret;
--
-- return count;
-+ return ret < 0 ? ret : count;
- }
- static DEVICE_ATTR_RW(brightness);
-
+++ /dev/null
-From 1848bb28f0579582f653ae95355b544fd8a51d1e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
-Date: Mon, 18 Sep 2023 18:11:01 +0200
-Subject: [PATCH 3/6] leds: turris-omnia: Do not use SMBUS calls
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The leds-turris-omnia driver uses three function for I2C access:
-- i2c_smbus_write_byte_data() and i2c_smbus_read_byte_data(), which
- cause an emulated SMBUS transfer,
-- i2c_master_send(), which causes an ordinary I2C transfer.
-
-The Turris Omnia MCU LED controller is not semantically SMBUS, it
-operates as a simple I2C bus. It does not implement any of the SMBUS
-specific features, like PEC, or procedure calls, or anything. Moreover
-the I2C controller driver also does not implement SMBUS, and so the
-emulated SMBUS procedure from drivers/i2c/i2c-core-smbus.c is used for
-the SMBUS calls, which gives an unnecessary overhead.
-
-When I first wrote the driver, I was unaware of these facts, and I
-simply used the first function that worked.
-
-Drop the I2C SMBUS calls and instead use simple I2C transfers.
-
-Fixes: 089381b27abe ("leds: initial support for Turris Omnia LEDs")
-Signed-off-by: Marek Behún <kabel@kernel.org>
-Link: https://lore.kernel.org/r/20230918161104.20860-2-kabel@kernel.org
-Signed-off-by: Lee Jones <lee@kernel.org>
----
- drivers/leds/leds-turris-omnia.c | 54 +++++++++++++++++++++++++-------
- 1 file changed, 42 insertions(+), 12 deletions(-)
-
---- a/drivers/leds/leds-turris-omnia.c
-+++ b/drivers/leds/leds-turris-omnia.c
-@@ -2,7 +2,7 @@
- /*
- * CZ.NIC's Turris Omnia LEDs driver
- *
-- * 2020 by Marek Behún <kabel@kernel.org>
-+ * 2020, 2023 by Marek Behún <kabel@kernel.org>
- */
-
- #include <linux/i2c.h>
-@@ -41,6 +41,37 @@ struct omnia_leds {
- struct omnia_led leds[];
- };
-
-+static int omnia_cmd_write_u8(const struct i2c_client *client, u8 cmd, u8 val)
-+{
-+ u8 buf[2] = { cmd, val };
-+
-+ return i2c_master_send(client, buf, sizeof(buf));
-+}
-+
-+static int omnia_cmd_read_u8(const struct i2c_client *client, u8 cmd)
-+{
-+ struct i2c_msg msgs[2];
-+ u8 reply;
-+ int ret;
-+
-+ msgs[0].addr = client->addr;
-+ msgs[0].flags = 0;
-+ msgs[0].len = 1;
-+ msgs[0].buf = &cmd;
-+ msgs[1].addr = client->addr;
-+ msgs[1].flags = I2C_M_RD;
-+ msgs[1].len = 1;
-+ msgs[1].buf = &reply;
-+
-+ ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
-+ if (likely(ret == ARRAY_SIZE(msgs)))
-+ return reply;
-+ else if (ret < 0)
-+ return ret;
-+ else
-+ return -EIO;
-+}
-+
- static int omnia_led_brightness_set_blocking(struct led_classdev *cdev,
- enum led_brightness brightness)
- {
-@@ -64,7 +95,7 @@ static int omnia_led_brightness_set_bloc
- if (buf[2] || buf[3] || buf[4])
- state |= CMD_LED_STATE_ON;
-
-- ret = i2c_smbus_write_byte_data(leds->client, CMD_LED_STATE, state);
-+ ret = omnia_cmd_write_u8(leds->client, CMD_LED_STATE, state);
- if (ret >= 0 && (state & CMD_LED_STATE_ON))
- ret = i2c_master_send(leds->client, buf, 5);
-
-@@ -114,9 +145,9 @@ static int omnia_led_register(struct i2c
- cdev->brightness_set_blocking = omnia_led_brightness_set_blocking;
-
- /* put the LED into software mode */
-- ret = i2c_smbus_write_byte_data(client, CMD_LED_MODE,
-- CMD_LED_MODE_LED(led->reg) |
-- CMD_LED_MODE_USER);
-+ ret = omnia_cmd_write_u8(client, CMD_LED_MODE,
-+ CMD_LED_MODE_LED(led->reg) |
-+ CMD_LED_MODE_USER);
- if (ret < 0) {
- dev_err(dev, "Cannot set LED %pOF to software mode: %i\n", np,
- ret);
-@@ -124,8 +155,8 @@ static int omnia_led_register(struct i2c
- }
-
- /* disable the LED */
-- ret = i2c_smbus_write_byte_data(client, CMD_LED_STATE,
-- CMD_LED_STATE_LED(led->reg));
-+ ret = omnia_cmd_write_u8(client, CMD_LED_STATE,
-+ CMD_LED_STATE_LED(led->reg));
- if (ret < 0) {
- dev_err(dev, "Cannot set LED %pOF brightness: %i\n", np, ret);
- return ret;
-@@ -158,7 +189,7 @@ static ssize_t brightness_show(struct de
- struct i2c_client *client = to_i2c_client(dev);
- int ret;
-
-- ret = i2c_smbus_read_byte_data(client, CMD_LED_GET_BRIGHTNESS);
-+ ret = omnia_cmd_read_u8(client, CMD_LED_GET_BRIGHTNESS);
-
- if (ret < 0)
- return ret;
-@@ -179,8 +210,7 @@ static ssize_t brightness_store(struct d
- if (brightness > 100)
- return -EINVAL;
-
-- ret = i2c_smbus_write_byte_data(client, CMD_LED_SET_BRIGHTNESS,
-- (u8)brightness);
-+ ret = omnia_cmd_write_u8(client, CMD_LED_SET_BRIGHTNESS, brightness);
-
- return ret < 0 ? ret : count;
- }
-@@ -238,8 +268,8 @@ static void omnia_leds_remove(struct i2c
- u8 buf[5];
-
- /* put all LEDs into default (HW triggered) mode */
-- i2c_smbus_write_byte_data(client, CMD_LED_MODE,
-- CMD_LED_MODE_LED(OMNIA_BOARD_LEDS));
-+ omnia_cmd_write_u8(client, CMD_LED_MODE,
-+ CMD_LED_MODE_LED(OMNIA_BOARD_LEDS));
-
- /* set all LEDs color to [255, 255, 255] */
- buf[0] = CMD_LED_COLOR;
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/property.h>
-@@ -3511,3 +3512,5 @@ static int __init regmap_initcall(void)
+@@ -3513,3 +3514,5 @@ static int __init regmap_initcall(void)
return 0;
}
postcore_initcall(regmap_initcall);
+MODULE_LICENSE("GPL");
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -4363,6 +4363,7 @@ int wake_up_state(struct task_struct *p,
+@@ -4367,6 +4367,7 @@ int wake_up_state(struct task_struct *p,
{
return try_to_wake_up(p, state, 0);
}
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -7882,7 +7882,7 @@ static int nft_register_flowtable_net_ho
+@@ -7878,7 +7878,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);
#include <net/dst.h>
#include <net/sock.h>
#include <net/checksum.h>
-@@ -4515,6 +4519,9 @@ static const u8 skb_ext_type_len[] = {
+@@ -4516,6 +4520,9 @@ static const u8 skb_ext_type_len[] = {
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
[SKB_EXT_MCTP] = SKB_EXT_CHUNKSIZEOF(struct mctp_flow),
#endif
};
static __always_inline unsigned int skb_ext_total_length(void)
-@@ -4535,6 +4542,9 @@ static __always_inline unsigned int skb_
+@@ -4536,6 +4543,9 @@ static __always_inline unsigned int skb_
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
skb_ext_type_len[SKB_EXT_MCTP] +
#endif
+++ /dev/null
-From b09e5ea32e099821b1cddc1e26e625ad994ba11e Mon Sep 17 00:00:00 2001
-From: Linus Walleij <linus.walleij@linaro.org>
-Date: Sun, 24 Sep 2023 21:20:24 +0200
-Subject: [PATCH] watchdog: ixp4xx: Make sure restart always works
-
-The IXP4xx watchdog in early "A0" silicon is unreliable and
-cannot be registered, however for some systems such as the
-USRobotics USR8200 the watchdog is the only restart option,
-so implement a "dummy" watchdog that can only support restart
-in this case.
-
-Fixes: 1aea522809e6 ("watchdog: ixp4xx: Implement restart")
-Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
----
-Other solutions like implementing a pure restart notifier
-callback catch in the driver is possible, but this method
-will minimize the amount of code and reuse infrastructure
-in the core.
----
- drivers/watchdog/ixp4xx_wdt.c | 28 +++++++++++++++++++++++++---
- 1 file changed, 25 insertions(+), 3 deletions(-)
-
---- a/drivers/watchdog/ixp4xx_wdt.c
-+++ b/drivers/watchdog/ixp4xx_wdt.c
-@@ -105,6 +105,25 @@ static const struct watchdog_ops ixp4xx_
- .owner = THIS_MODULE,
- };
-
-+/*
-+ * The A0 version of the IXP422 had a bug in the watchdog making
-+ * is useless, but we still need to use it to restart the system
-+ * as it is the only way, so in this special case we register a
-+ * "dummy" watchdog that doesn't really work, but will support
-+ * the restart operation.
-+ */
-+static int ixp4xx_wdt_dummy(struct watchdog_device *wdd)
-+{
-+ return 0;
-+}
-+
-+static const struct watchdog_ops ixp4xx_wdt_restart_only_ops = {
-+ .start = ixp4xx_wdt_dummy,
-+ .stop = ixp4xx_wdt_dummy,
-+ .restart = ixp4xx_wdt_restart,
-+ .owner = THIS_MODULE,
-+};
-+
- static const struct watchdog_info ixp4xx_wdt_info = {
- .options = WDIOF_KEEPALIVEPING
- | WDIOF_MAGICCLOSE
-@@ -120,14 +139,17 @@ static void ixp4xx_clock_action(void *d)
-
- static int ixp4xx_wdt_probe(struct platform_device *pdev)
- {
-+ static const struct watchdog_ops *iwdt_ops;
- struct device *dev = &pdev->dev;
- struct ixp4xx_wdt *iwdt;
- struct clk *clk;
- int ret;
-
- if (!(read_cpuid_id() & 0xf) && !cpu_is_ixp46x()) {
-- dev_err(dev, "Rev. A0 IXP42x CPU detected - watchdog disabled\n");
-- return -ENODEV;
-+ dev_err(dev, "Rev. A0 IXP42x CPU detected - only restart supported\n");
-+ iwdt_ops = &ixp4xx_wdt_restart_only_ops;
-+ } else {
-+ iwdt_ops = &ixp4xx_wdt_ops;
- }
-
- iwdt = devm_kzalloc(dev, sizeof(*iwdt), GFP_KERNEL);
-@@ -153,7 +175,7 @@ static int ixp4xx_wdt_probe(struct platf
- iwdt->rate = IXP4XX_TIMER_FREQ;
-
- iwdt->wdd.info = &ixp4xx_wdt_info;
-- iwdt->wdd.ops = &ixp4xx_wdt_ops;
-+ iwdt->wdd.ops = iwdt_ops;
- iwdt->wdd.min_timeout = 1;
- iwdt->wdd.max_timeout = U32_MAX / iwdt->rate;
- iwdt->wdd.parent = dev;
if (r)
--- a/drivers/clk/mediatek/clk-mt2701.c
+++ b/drivers/clk/mediatek/clk-mt2701.c
-@@ -683,8 +683,8 @@ static int mtk_topckgen_init(struct plat
+@@ -685,8 +685,8 @@ static int mtk_topckgen_init(struct plat
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
base, &mt2701_clk_lock, clk_data);
return of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
}
-@@ -783,8 +783,8 @@ static int mtk_infrasys_init(struct plat
+@@ -789,8 +789,8 @@ static int mtk_infrasys_init(struct plat
}
}
mtk_clk_register_factors(infra_fixed_divs, ARRAY_SIZE(infra_fixed_divs),
infra_clk_data);
-@@ -894,8 +894,8 @@ static int mtk_pericfg_init(struct platf
-
- clk_data = mtk_alloc_clk_data(CLK_PERI_NR);
+@@ -902,8 +902,8 @@ static int mtk_pericfg_init(struct platf
+ if (!clk_data)
+ return -ENOMEM;
- mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
- clk_data);
&mt7622_clk_lock, clk_data);
--- a/drivers/clk/mediatek/clk-mt7629-eth.c
+++ b/drivers/clk/mediatek/clk-mt7629-eth.c
-@@ -80,7 +80,8 @@ static int clk_mt7629_ethsys_init(struct
-
- clk_data = mtk_alloc_clk_data(CLK_ETH_NR_CLK);
+@@ -82,7 +82,8 @@ static int clk_mt7629_ethsys_init(struct
+ if (!clk_data)
+ return -ENOMEM;
- mtk_clk_register_gates(node, eth_clks, CLK_ETH_NR_CLK, clk_data);
+ mtk_clk_register_gates(&pdev->dev, node, eth_clks,
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
if (r)
-@@ -102,8 +103,8 @@ static int clk_mt7629_sgmiisys_init(stru
-
- clk_data = mtk_alloc_clk_data(CLK_SGMII_NR_CLK);
+@@ -106,8 +107,8 @@ static int clk_mt7629_sgmiisys_init(stru
+ if (!clk_data)
+ return -ENOMEM;
- mtk_clk_register_gates(node, sgmii_clks[id++], CLK_SGMII_NR_CLK,
- clk_data);
if (r)
--- a/drivers/clk/mediatek/clk-mt7629.c
+++ b/drivers/clk/mediatek/clk-mt7629.c
-@@ -581,8 +581,8 @@ static int mtk_infrasys_init(struct plat
-
- clk_data = mtk_alloc_clk_data(CLK_INFRA_NR_CLK);
+@@ -585,8 +585,8 @@ static int mtk_infrasys_init(struct plat
+ if (!clk_data)
+ return -ENOMEM;
- mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
- clk_data);
mtk_clk_register_cpumuxes(node, infra_muxes, ARRAY_SIZE(infra_muxes),
clk_data);
-@@ -604,8 +604,8 @@ static int mtk_pericfg_init(struct platf
-
- clk_data = mtk_alloc_clk_data(CLK_PERI_NR_CLK);
+@@ -610,8 +610,8 @@ static int mtk_pericfg_init(struct platf
+ if (!clk_data)
+ return -ENOMEM;
- mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
- clk_data);
mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
&mt7629_clk_lock, clk_data);
-@@ -631,7 +631,7 @@ static int mtk_apmixedsys_init(struct pl
+@@ -637,7 +637,7 @@ static int mtk_apmixedsys_init(struct pl
mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls),
clk_data);
--- a/drivers/clk/mediatek/clk-mt2701.c
+++ b/drivers/clk/mediatek/clk-mt2701.c
-@@ -757,7 +757,7 @@ static void __init mtk_infrasys_init_ear
+@@ -761,7 +761,7 @@ static void __init mtk_infrasys_init_ear
mtk_clk_register_factors(infra_fixed_divs, ARRAY_SIZE(infra_fixed_divs),
infra_clk_data);
clk_data);
--- a/drivers/clk/mediatek/clk-mt7629.c
+++ b/drivers/clk/mediatek/clk-mt7629.c
-@@ -584,8 +584,8 @@ static int mtk_infrasys_init(struct plat
+@@ -588,8 +588,8 @@ static int mtk_infrasys_init(struct plat
mtk_clk_register_gates(&pdev->dev, node, infra_clks,
ARRAY_SIZE(infra_clks), clk_data);
--- a/drivers/clk/mediatek/clk-mt2701.c
+++ b/drivers/clk/mediatek/clk-mt2701.c
-@@ -677,8 +677,9 @@ static int mtk_topckgen_init(struct plat
+@@ -679,8 +679,9 @@ static int mtk_topckgen_init(struct plat
mtk_clk_register_factors(top_fixed_divs, ARRAY_SIZE(top_fixed_divs),
clk_data);
mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
base, &mt2701_clk_lock, clk_data);
-@@ -897,8 +898,9 @@ static int mtk_pericfg_init(struct platf
+@@ -905,8 +906,9 @@ static int mtk_pericfg_init(struct platf
mtk_clk_register_gates(&pdev->dev, node, peri_clks,
ARRAY_SIZE(peri_clks), clk_data);
r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
--- a/drivers/clk/mediatek/clk-mt7629.c
+++ b/drivers/clk/mediatek/clk-mt7629.c
-@@ -564,8 +564,9 @@ static int mtk_topckgen_init(struct plat
+@@ -566,8 +566,9 @@ static int mtk_topckgen_init(struct plat
mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs),
clk_data);
clk_prepare_enable(clk_data->hws[CLK_TOP_AXI_SEL]->clk);
clk_prepare_enable(clk_data->hws[CLK_TOP_MEM_SEL]->clk);
-@@ -607,7 +608,8 @@ static int mtk_pericfg_init(struct platf
+@@ -613,7 +614,8 @@ static int mtk_pericfg_init(struct platf
mtk_clk_register_gates(&pdev->dev, node, peri_clks,
ARRAY_SIZE(peri_clks), clk_data);
/**
--- a/drivers/clk/qcom/clk-rcg2.c
+++ b/drivers/clk/qcom/clk-rcg2.c
-@@ -209,11 +209,60 @@ clk_rcg2_recalc_rate(struct clk_hw *hw,
+@@ -203,11 +203,60 @@ clk_rcg2_recalc_rate(struct clk_hw *hw,
return __clk_rcg2_recalc_rate(hw, parent_rate, cfg);
}
struct clk_hw *p;
struct clk_rcg2 *rcg = to_clk_rcg2(hw);
int index;
-@@ -232,7 +281,15 @@ static int _freq_tbl_determine_rate(stru
+@@ -226,7 +275,15 @@ static int _freq_tbl_determine_rate(stru
if (!f)
return -EINVAL;
if (index < 0)
return index;
-@@ -242,18 +299,18 @@ static int _freq_tbl_determine_rate(stru
+@@ -236,18 +293,18 @@ static int _freq_tbl_determine_rate(stru
return -EINVAL;
if (clk_flags & CLK_SET_RATE_PARENT) {
rate = tmp;
}
} else {
-@@ -261,7 +318,7 @@ static int _freq_tbl_determine_rate(stru
+@@ -255,7 +312,7 @@ static int _freq_tbl_determine_rate(stru
}
req->best_parent_hw = p;
req->best_parent_rate = rate;
return 0;
}
-@@ -357,6 +414,7 @@ static int __clk_rcg2_set_rate(struct cl
+@@ -351,6 +408,7 @@ static int __clk_rcg2_set_rate(struct cl
{
struct clk_rcg2 *rcg = to_clk_rcg2(hw);
const struct freq_tbl *f;
switch (policy) {
case FLOOR:
-@@ -372,7 +430,15 @@ static int __clk_rcg2_set_rate(struct cl
+@@ -366,7 +424,15 @@ static int __clk_rcg2_set_rate(struct cl
if (!f)
return -EINVAL;