From: Claudiu Beznea <claudiu.beznea@microchip.com> To: <mturquette@baylibre.com>, <sboyd@kernel.org>, <nicolas.ferre@microchip.com>, <alexandre.belloni@bootlin.com>, <ludovic.desroches@microchip.com> Cc: <linux-clk@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, Claudiu Beznea <claudiu.beznea@microchip.com> Subject: [PATCH v3 00/17] clk: at91: updates for power management and dvfs Date: Fri, 17 Sep 2021 15:06:25 +0300 [thread overview] Message-ID: <20210917120642.8993-1-claudiu.beznea@microchip.com> (raw) Hi, This series addresses the clock power management for SAMA7G5 and also updates the master clock driver and sam9x60-pll driver to accommodate the requests at [1] and avoid overclocking of CPU and MCK0 domains while changing the frequency via DVFS. The power management part is implemented by adding save_context()/restore_context() on each clock driver (patch 1/17). Since the PM part is necessary only for backup mode (supported on SAMA5D2 and SAMA7G5) the pmc.c has been adapted to call the save_context()/restore_context() only on switches to/from backup mode (patch 2/17). Patch 3/17 adds the securam clock on SAMA7G5. This is necessary for backup mode of SAMA7G5. Patch 4/17 adapt SAMA7G5 MCK1..4 driver to use the defines at include/linux/clk/at91_pmc.h introduced in commit ec03f18cc222 ("clk: at91: add register definition for sama7g5's master clock"). Patch 5/17 improves a bit readabiblity in some places of master clock driver. Patch 6/17 enable the suspend/resume for clocks also for SAMA7G5. Patches 7-10/17 adds fixes in master clock driver and sam9x60-pll driver. Patches 11-12/17 address DVFS by adding notifiers for master clock driver and sam9x60-pll driver to avoid overclocking for CPU domain and MCK0 domain. Patch 13/17 removes the master clock prescaler from Linux clock tree as it has been discovered a hardware bug on it and it may not lock on some scenario although its output clock is stable. Patch 14/17 decreases the low limit of MCK0 as it can go even to 32KHz. Patch 15/17 uses clk_core_get_rate_recalc() in clk_rate_get(). Patches 16-17/17 adds minor cleanups on clk.c Stephen, I added everything in one series (again) and didn't send at 1st the non-DVFS patches (as you suggested in [2]) as at the time of proposal patch 4/17 here depended on commit ec03f18cc222 ("clk: at91: add register definition for sama7g5's master clock") which wasn't present on your tree at that time. Thank you, Claudiu Beznea [1] https://lore.kernel.org/lkml/20210105104426.4tmgc2l3vyicwedd@vireshk-i7/ [2] https://lore.kernel.org/lkml/163047507296.42057.10597374695758699868@swboyd.mtv.corp.google.com/ Changes in v3: - minor fixes in patch 1/7 (e.g. use regmap_read() + checks + update + regmap_write() sequence instead of regmap_read() + checks + regmap_update_bits() - patch 4/17 has been updated after commit ec03f18cc222 ("clk: at91: add register definition for sama7g5's master clock") - patch 6-10/17, 14-17/17 are newly introduced - notifier for sam9x60 div pll was introduced (patch 11/17) and notifier logic for master clock div has been changed (patch 12/17) to use safe divider on PRE_RATE_CHANGE events and update clock to highest possible rate on POST_RATE_CHANGE events - master clock prescaler has been removed from Linux clock tree for SAMA7G5 Changes in v2: - addressed code review comments - collected tags Claudiu Beznea (17): clk: at91: re-factor clocks suspend/resume clk: at91: pmc: execute suspend/resume only for backup mode clk: at91: sama7g5: add securam's peripheral clock clk: at91: clk-master: add register definition for sama7g5's master clock clk: at91: clk-master: improve readability by using local variables clk: at91: pmc: add sama7g5 to the list of available pmcs clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL clk: at91: clk-master: check if div or pres is zero clk: at91: clk-master: mask mckr against layout->mask clk: at91: clk-master: fix prescaler logic clk: at91: clk-sam9x60-pll: add notifier for div part of PLL clk: at91: clk-master: add notifier for divider clk: at91: sama7g5: remove prescaler part of master clock clk: at91: sama7g5: set low limit for mck0 at 32KHz clk: use clk_core_get_rate_recalc() in clk_rate_get() clk: remove extra empty line clk: do not initialize ret drivers/clk/at91/at91rm9200.c | 2 +- drivers/clk/at91/at91sam9260.c | 2 +- drivers/clk/at91/at91sam9g45.c | 2 +- drivers/clk/at91/at91sam9n12.c | 2 +- drivers/clk/at91/at91sam9rl.c | 2 +- drivers/clk/at91/at91sam9x5.c | 2 +- drivers/clk/at91/clk-generated.c | 46 ++- drivers/clk/at91/clk-main.c | 66 ++++ drivers/clk/at91/clk-master.c | 463 ++++++++++++++++++++++------ drivers/clk/at91/clk-peripheral.c | 40 ++- drivers/clk/at91/clk-pll.c | 39 +++ drivers/clk/at91/clk-programmable.c | 29 +- drivers/clk/at91/clk-sam9x60-pll.c | 174 +++++++++-- drivers/clk/at91/clk-system.c | 20 ++ drivers/clk/at91/clk-usb.c | 27 ++ drivers/clk/at91/clk-utmi.c | 39 +++ drivers/clk/at91/dt-compat.c | 2 +- drivers/clk/at91/pmc.c | 183 +++-------- drivers/clk/at91/pmc.h | 29 +- drivers/clk/at91/sam9x60.c | 6 +- drivers/clk/at91/sama5d2.c | 2 +- drivers/clk/at91/sama5d3.c | 2 +- drivers/clk/at91/sama5d4.c | 2 +- drivers/clk/at91/sama7g5.c | 58 +++- drivers/clk/clk.c | 5 +- 25 files changed, 928 insertions(+), 316 deletions(-) -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Claudiu Beznea <claudiu.beznea@microchip.com> To: <mturquette@baylibre.com>, <sboyd@kernel.org>, <nicolas.ferre@microchip.com>, <alexandre.belloni@bootlin.com>, <ludovic.desroches@microchip.com> Cc: <linux-clk@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, Claudiu Beznea <claudiu.beznea@microchip.com> Subject: [PATCH v3 00/17] clk: at91: updates for power management and dvfs Date: Fri, 17 Sep 2021 15:06:25 +0300 [thread overview] Message-ID: <20210917120642.8993-1-claudiu.beznea@microchip.com> (raw) Hi, This series addresses the clock power management for SAMA7G5 and also updates the master clock driver and sam9x60-pll driver to accommodate the requests at [1] and avoid overclocking of CPU and MCK0 domains while changing the frequency via DVFS. The power management part is implemented by adding save_context()/restore_context() on each clock driver (patch 1/17). Since the PM part is necessary only for backup mode (supported on SAMA5D2 and SAMA7G5) the pmc.c has been adapted to call the save_context()/restore_context() only on switches to/from backup mode (patch 2/17). Patch 3/17 adds the securam clock on SAMA7G5. This is necessary for backup mode of SAMA7G5. Patch 4/17 adapt SAMA7G5 MCK1..4 driver to use the defines at include/linux/clk/at91_pmc.h introduced in commit ec03f18cc222 ("clk: at91: add register definition for sama7g5's master clock"). Patch 5/17 improves a bit readabiblity in some places of master clock driver. Patch 6/17 enable the suspend/resume for clocks also for SAMA7G5. Patches 7-10/17 adds fixes in master clock driver and sam9x60-pll driver. Patches 11-12/17 address DVFS by adding notifiers for master clock driver and sam9x60-pll driver to avoid overclocking for CPU domain and MCK0 domain. Patch 13/17 removes the master clock prescaler from Linux clock tree as it has been discovered a hardware bug on it and it may not lock on some scenario although its output clock is stable. Patch 14/17 decreases the low limit of MCK0 as it can go even to 32KHz. Patch 15/17 uses clk_core_get_rate_recalc() in clk_rate_get(). Patches 16-17/17 adds minor cleanups on clk.c Stephen, I added everything in one series (again) and didn't send at 1st the non-DVFS patches (as you suggested in [2]) as at the time of proposal patch 4/17 here depended on commit ec03f18cc222 ("clk: at91: add register definition for sama7g5's master clock") which wasn't present on your tree at that time. Thank you, Claudiu Beznea [1] https://lore.kernel.org/lkml/20210105104426.4tmgc2l3vyicwedd@vireshk-i7/ [2] https://lore.kernel.org/lkml/163047507296.42057.10597374695758699868@swboyd.mtv.corp.google.com/ Changes in v3: - minor fixes in patch 1/7 (e.g. use regmap_read() + checks + update + regmap_write() sequence instead of regmap_read() + checks + regmap_update_bits() - patch 4/17 has been updated after commit ec03f18cc222 ("clk: at91: add register definition for sama7g5's master clock") - patch 6-10/17, 14-17/17 are newly introduced - notifier for sam9x60 div pll was introduced (patch 11/17) and notifier logic for master clock div has been changed (patch 12/17) to use safe divider on PRE_RATE_CHANGE events and update clock to highest possible rate on POST_RATE_CHANGE events - master clock prescaler has been removed from Linux clock tree for SAMA7G5 Changes in v2: - addressed code review comments - collected tags Claudiu Beznea (17): clk: at91: re-factor clocks suspend/resume clk: at91: pmc: execute suspend/resume only for backup mode clk: at91: sama7g5: add securam's peripheral clock clk: at91: clk-master: add register definition for sama7g5's master clock clk: at91: clk-master: improve readability by using local variables clk: at91: pmc: add sama7g5 to the list of available pmcs clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL clk: at91: clk-master: check if div or pres is zero clk: at91: clk-master: mask mckr against layout->mask clk: at91: clk-master: fix prescaler logic clk: at91: clk-sam9x60-pll: add notifier for div part of PLL clk: at91: clk-master: add notifier for divider clk: at91: sama7g5: remove prescaler part of master clock clk: at91: sama7g5: set low limit for mck0 at 32KHz clk: use clk_core_get_rate_recalc() in clk_rate_get() clk: remove extra empty line clk: do not initialize ret drivers/clk/at91/at91rm9200.c | 2 +- drivers/clk/at91/at91sam9260.c | 2 +- drivers/clk/at91/at91sam9g45.c | 2 +- drivers/clk/at91/at91sam9n12.c | 2 +- drivers/clk/at91/at91sam9rl.c | 2 +- drivers/clk/at91/at91sam9x5.c | 2 +- drivers/clk/at91/clk-generated.c | 46 ++- drivers/clk/at91/clk-main.c | 66 ++++ drivers/clk/at91/clk-master.c | 463 ++++++++++++++++++++++------ drivers/clk/at91/clk-peripheral.c | 40 ++- drivers/clk/at91/clk-pll.c | 39 +++ drivers/clk/at91/clk-programmable.c | 29 +- drivers/clk/at91/clk-sam9x60-pll.c | 174 +++++++++-- drivers/clk/at91/clk-system.c | 20 ++ drivers/clk/at91/clk-usb.c | 27 ++ drivers/clk/at91/clk-utmi.c | 39 +++ drivers/clk/at91/dt-compat.c | 2 +- drivers/clk/at91/pmc.c | 183 +++-------- drivers/clk/at91/pmc.h | 29 +- drivers/clk/at91/sam9x60.c | 6 +- drivers/clk/at91/sama5d2.c | 2 +- drivers/clk/at91/sama5d3.c | 2 +- drivers/clk/at91/sama5d4.c | 2 +- drivers/clk/at91/sama7g5.c | 58 +++- drivers/clk/clk.c | 5 +- 25 files changed, 928 insertions(+), 316 deletions(-) -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2021-09-17 12:06 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-17 12:06 Claudiu Beznea [this message] 2021-09-17 12:06 ` [PATCH v3 00/17] clk: at91: updates for power management and dvfs Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 01/17] clk: at91: re-factor clocks suspend/resume Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:20 ` Claudiu.Beznea 2021-09-17 12:20 ` Claudiu.Beznea 2021-09-17 12:06 ` [PATCH v3 02/17] clk: at91: pmc: execute suspend/resume only for backup mode Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 03/17] clk: at91: sama7g5: add securam's peripheral clock Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 04/17] clk: at91: clk-master: add register definition for sama7g5's master clock Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 05/17] clk: at91: clk-master: improve readability by using local variables Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 06/17] clk: at91: pmc: add sama7g5 to the list of available pmcs Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 07/17] clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 08/17] clk: at91: clk-master: check if div or pres is zero Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 09/17] clk: at91: clk-master: mask mckr against layout->mask Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 10/17] clk: at91: clk-master: fix prescaler logic Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 11/17] clk: at91: clk-sam9x60-pll: add notifier for div part of PLL Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 12/17] clk: at91: clk-master: add notifier for divider Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 13/17] clk: at91: sama7g5: remove prescaler part of master clock Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 14/17] clk: at91: sama7g5: set low limit for mck0 at 32KHz Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 15/17] clk: use clk_core_get_rate_recalc() in clk_rate_get() Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 16/17] clk: remove extra empty line Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea 2021-09-17 12:06 ` [PATCH v3 17/17] clk: do not initialize ret Claudiu Beznea 2021-09-17 12:06 ` Claudiu Beznea
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210917120642.8993-1-claudiu.beznea@microchip.com \ --to=claudiu.beznea@microchip.com \ --cc=alexandre.belloni@bootlin.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-clk@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=ludovic.desroches@microchip.com \ --cc=mturquette@baylibre.com \ --cc=nicolas.ferre@microchip.com \ --cc=sboyd@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.