Skip to content
Snippets Groups Projects

Tags

Tags give the ability to mark specific points in history as being important
  • Name
  • Oldest updated
  • Updated date
  • Latest version
  • Oldest version
  • v6.13-rc4
    4bbf9020 · Linux 6.13-rc4 ·
    Linux 6.13-rc4
    
  • next-20241220
    next-20241220
    
  • next-20241216
    next-20241216
    
  • v6.13-rc3
    78d4f34e · Linux 6.13-rc3 ·
    Linux 6.13-rc3
    
  • next-20241213
    next-20241213
    
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v8
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    Changes in v8:
    - Picks up change I agreed with Vlad but failed to cherry-pick into my b4
      tree - Vlad/Bod
    - Rewords the commit log for patch #3. As I read it I decided I might
      translate bits of it from thought-stream into English - Bod
    - Link to v7: https://lore.kernel.org/r/20241211-b4-linux-next-24-11-18-clock-multiple-power-domains-v7-0-7e302fd09488@linaro.org
    
    Changes in v7:
    - Expand commit log in patch #3
      I've discussed with Bjorn on IRC and video what to put into the log here
      and captured most of what we discussed.
    
      Mostly the point here is voting for voltages in the power-domain list
      is up to the drivers to do with performance states/opp-tables not for the
      GDSC code. - Bjorn/Bryan
    - Link to v6: https://lore.kernel.org/r/20241129-b4-linux-next-24-11-18-clock-multiple-power-domains-v6-0-24486a608b86@linaro.org
    
    Changes in v6:
    - Passes NULL to second parameter of devm_pm_domain_attach_list - Vlad
    - Link to v5: https://lore.kernel.org/r/20241128-b4-linux-next-24-11-18-clock-multiple-power-domains-v5-0-ca2826c46814@linaro.org
    
    Changes in v5:
    - In-lines devm_pm_domain_attach_list() in probe() directly - Vlad
    - Link to v4: https://lore.kernel.org/r/20241127-b4-linux-next-24-11-18-clock-multiple-power-domains-v4-0-4348d40cb635@linaro.org
    
    v4:
    - Adds Bjorn's RB to first patch - Bjorn
    - Drops the 'd' in "and int" - Bjorn
    - Amends commit log of patch 3 to capture a number of open questions -
      Bjorn
    - Link to v3: https://lore.kernel.org/r/20241126-b4-linux-next-24-11-18-clock-multiple-power-domains-v3-0-836dad33521a@linaro.org
    
    v3:
    - Fixes commit log "per which" - Bryan
    - Link to v2: https://lore.kernel.org/r/20241125-b4-linux-next-24-11-18-clock-multiple-power-domains-v2-0-a5e7554d7e45@linaro.org
    
    v2:
    The main change in this version is Bjorn's pointing out that pm_runtime_*
    inside of the gdsc_enable/gdsc_disable path would be recursive and cause a
    lockdep splat. Dmitry alluded to this too.
    
    Bjorn pointed to stuff being done lower in the gdsc_register() routine that
    might be a starting point.
    
    I iterated around that idea and came up with patch #3. When a gdsc has no
    parent and the pd_list is non-NULL then attach that orphan GDSC to the
    clock controller power-domain list.
    
    Existing subdomain code in gdsc_register() will connect the parent GDSCs in
    the clock-controller to the clock-controller subdomain, the new code here
    does that same job for a list of power-domains the clock controller depends
    on.
    
    To Dmitry's point about MMCX and MCX dependencies for the registers inside
    of the clock controller, I have switched off all references in a test dtsi
    and confirmed that accessing the clock-controller regs themselves isn't
    required.
    
    On the second point I also verified my test branch with lockdep on which
    was a concern with the pm_domain version of this solution but I wanted to
    cover it anyway with the new approach for completeness sake.
    
    Here's the item-by-item list of changes:
    
    - Adds a patch to capture pm_genpd_add_subdomain() result code - Bryan
    - Changes changelog of second patch to remove singleton and generally
      to make the commit log easier to understand - Bjorn
    - Uses demv_pm_domain_attach_list - Vlad
    - Changes error check to if (ret < 0 && ret != -EEXIST) - Vlad
    - Retains passing &pd_data instead of NULL - because NULL doesn't do
      the same thing - Bryan/Vlad
    - Retains standalone function qcom_cc_pds_attach() because the pd_data
      enumeration looks neater in a standalone function - Bryan/Vlad
    - Drops pm_runtime in favour of gdsc_add_subdomain_list() for each
      power-domain in the pd_list.
      The pd_list will be whatever is pointed to by power-domains = <>
      in the dtsi - Bjorn
    - Link to v1: https://lore.kernel.org/r/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-v1-0-b7a2bd82ba37@linaro.org
    
    v1:
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (3):
          clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
          clk: qcom: common: Add support for power-domain attachment
          clk: qcom: Support attaching GDSCs to multiple parents
    
     drivers/clk/qcom/common.c |  6 ++++++
     drivers/clk/qcom/gdsc.c   | 41 +++++++++++++++++++++++++++++++++++++++--
     drivers/clk/qcom/gdsc.h   |  1 +
     3 files changed, 46 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v7
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    Changes in v7:
    - Expand commit log in patch #3
      I've discussed with Bjorn on IRC and video what to put into the log here
      and captured most of what we discussed.
    
      Mostly the point here is voting for voltages in the power-domain list
      is up to the drivers to do with performance states/opp-tables not for the
      GDSC code. - Bjorn/Bryan
    - Link to v6: https://lore.kernel.org/r/20241129-b4-linux-next-24-11-18-clock-multiple-power-domains-v6-0-24486a608b86@linaro.org
    
    Changes in v6:
    - Passes NULL to second parameter of devm_pm_domain_attach_list - Vlad
    - Link to v5: https://lore.kernel.org/r/20241128-b4-linux-next-24-11-18-clock-multiple-power-domains-v5-0-ca2826c46814@linaro.org
    
    Changes in v5:
    - In-lines devm_pm_domain_attach_list() in probe() directly - Vlad
    - Link to v4: https://lore.kernel.org/r/20241127-b4-linux-next-24-11-18-clock-multiple-power-domains-v4-0-4348d40cb635@linaro.org
    
    v4:
    - Adds Bjorn's RB to first patch - Bjorn
    - Drops the 'd' in "and int" - Bjorn
    - Amends commit log of patch 3 to capture a number of open questions -
      Bjorn
    - Link to v3: https://lore.kernel.org/r/20241126-b4-linux-next-24-11-18-clock-multiple-power-domains-v3-0-836dad33521a@linaro.org
    
    v3:
    - Fixes commit log "per which" - Bryan
    - Link to v2: https://lore.kernel.org/r/20241125-b4-linux-next-24-11-18-clock-multiple-power-domains-v2-0-a5e7554d7e45@linaro.org
    
    v2:
    The main change in this version is Bjorn's pointing out that pm_runtime_*
    inside of the gdsc_enable/gdsc_disable path would be recursive and cause a
    lockdep splat. Dmitry alluded to this too.
    
    Bjorn pointed to stuff being done lower in the gdsc_register() routine that
    might be a starting point.
    
    I iterated around that idea and came up with patch #3. When a gdsc has no
    parent and the pd_list is non-NULL then attach that orphan GDSC to the
    clock controller power-domain list.
    
    Existing subdomain code in gdsc_register() will connect the parent GDSCs in
    the clock-controller to the clock-controller subdomain, the new code here
    does that same job for a list of power-domains the clock controller depends
    on.
    
    To Dmitry's point about MMCX and MCX dependencies for the registers inside
    of the clock controller, I have switched off all references in a test dtsi
    and confirmed that accessing the clock-controller regs themselves isn't
    required.
    
    On the second point I also verified my test branch with lockdep on which
    was a concern with the pm_domain version of this solution but I wanted to
    cover it anyway with the new approach for completeness sake.
    
    Here's the item-by-item list of changes:
    
    - Adds a patch to capture pm_genpd_add_subdomain() result code - Bryan
    - Changes changelog of second patch to remove singleton and generally
      to make the commit log easier to understand - Bjorn
    - Uses demv_pm_domain_attach_list - Vlad
    - Changes error check to if (ret < 0 && ret != -EEXIST) - Vlad
    - Retains passing &pd_data instead of NULL - because NULL doesn't do
      the same thing - Bryan/Vlad
    - Retains standalone function qcom_cc_pds_attach() because the pd_data
      enumeration looks neater in a standalone function - Bryan/Vlad
    - Drops pm_runtime in favour of gdsc_add_subdomain_list() for each
      power-domain in the pd_list.
      The pd_list will be whatever is pointed to by power-domains = <>
      in the dtsi - Bjorn
    - Link to v1: https://lore.kernel.org/r/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-v1-0-b7a2bd82ba37@linaro.org
    
    v1:
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (3):
          clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
          clk: qcom: common: Add support for power-domain attachment
          clk: qcom: Support attaching GDSCs to multiple parents
    
     drivers/clk/qcom/common.c | 10 ++++++++++
     drivers/clk/qcom/gdsc.c   | 41 +++++++++++++++++++++++++++++++++++++++--
     drivers/clk/qcom/gdsc.h   |  1 +
     3 files changed, 50 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • next-20241210
    next-20241210
    
  • v6.13-rc2
    fac04efc · Linux 6.13-rc2 ·
    Linux 6.13-rc2
    
  • arm-laptop/wip/x1e80100-6.13-rc1+camss-queued-upstream
  • v6.13-rc1
    40384c84 · Linux 6.13-rc1 ·
    Linux 6.13-rc1
    
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v6
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    Changes in v6:
    - Passes NULL to second parameter of devm_pm_domain_attach_list - Vlad
    - Link to v5: https://lore.kernel.org/r/20241128-b4-linux-next-24-11-18-clock-multiple-power-domains-v5-0-ca2826c46814@linaro.org
    
    Changes in v5:
    - In-lines devm_pm_domain_attach_list() in probe() directly - Vlad
    - Link to v4: https://lore.kernel.org/r/20241127-b4-linux-next-24-11-18-clock-multiple-power-domains-v4-0-4348d40cb635@linaro.org
    
    v4:
    - Adds Bjorn's RB to first patch - Bjorn
    - Drops the 'd' in "and int" - Bjorn
    - Amends commit log of patch 3 to capture a number of open questions -
      Bjorn
    - Link to v3: https://lore.kernel.org/r/20241126-b4-linux-next-24-11-18-clock-multiple-power-domains-v3-0-836dad33521a@linaro.org
    
    v3:
    - Fixes commit log "per which" - Bryan
    - Link to v2: https://lore.kernel.org/r/20241125-b4-linux-next-24-11-18-clock-multiple-power-domains-v2-0-a5e7554d7e45@linaro.org
    
    v2:
    The main change in this version is Bjorn's pointing out that pm_runtime_*
    inside of the gdsc_enable/gdsc_disable path would be recursive and cause a
    lockdep splat. Dmitry alluded to this too.
    
    Bjorn pointed to stuff being done lower in the gdsc_register() routine that
    might be a starting point.
    
    I iterated around that idea and came up with patch #3. When a gdsc has no
    parent and the pd_list is non-NULL then attach that orphan GDSC to the
    clock controller power-domain list.
    
    Existing subdomain code in gdsc_register() will connect the parent GDSCs in
    the clock-controller to the clock-controller subdomain, the new code here
    does that same job for a list of power-domains the clock controller depends
    on.
    
    To Dmitry's point about MMCX and MCX dependencies for the registers inside
    of the clock controller, I have switched off all references in a test dtsi
    and confirmed that accessing the clock-controller regs themselves isn't
    required.
    
    On the second point I also verified my test branch with lockdep on which
    was a concern with the pm_domain version of this solution but I wanted to
    cover it anyway with the new approach for completeness sake.
    
    Here's the item-by-item list of changes:
    
    - Adds a patch to capture pm_genpd_add_subdomain() result code - Bryan
    - Changes changelog of second patch to remove singleton and generally
      to make the commit log easier to understand - Bjorn
    - Uses demv_pm_domain_attach_list - Vlad
    - Changes error check to if (ret < 0 && ret != -EEXIST) - Vlad
    - Retains passing &pd_data instead of NULL - because NULL doesn't do
      the same thing - Bryan/Vlad
    - Retains standalone function qcom_cc_pds_attach() because the pd_data
      enumeration looks neater in a standalone function - Bryan/Vlad
    - Drops pm_runtime in favour of gdsc_add_subdomain_list() for each
      power-domain in the pd_list.
      The pd_list will be whatever is pointed to by power-domains = <>
      in the dtsi - Bjorn
    - Link to v1: https://lore.kernel.org/r/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-v1-0-b7a2bd82ba37@linaro.org
    
    v1:
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (3):
          clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
          clk: qcom: common: Add support for power-domain attachment
          clk: qcom: Support attaching GDSCs to multiple parents
    
     drivers/clk/qcom/common.c |  6 ++++++
     drivers/clk/qcom/gdsc.c   | 41 +++++++++++++++++++++++++++++++++++++++--
     drivers/clk/qcom/gdsc.h   |  1 +
     3 files changed, 46 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v5
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    Changes in v5:
    - In-lines devm_pm_domain_attach_list() in probe() directly - Vlad
    - Link to v4: https://lore.kernel.org/r/20241127-b4-linux-next-24-11-18-clock-multiple-power-domains-v4-0-4348d40cb635@linaro.org
    
    v4:
    - Adds Bjorn's RB to first patch - Bjorn
    - Drops the 'd' in "and int" - Bjorn
    - Amends commit log of patch 3 to capture a number of open questions -
      Bjorn
    - Link to v3: https://lore.kernel.org/r/20241126-b4-linux-next-24-11-18-clock-multiple-power-domains-v3-0-836dad33521a@linaro.org
    
    v3:
    - Fixes commit log "per which" - Bryan
    - Link to v2: https://lore.kernel.org/r/20241125-b4-linux-next-24-11-18-clock-multiple-power-domains-v2-0-a5e7554d7e45@linaro.org
    
    v2:
    The main change in this version is Bjorn's pointing out that pm_runtime_*
    inside of the gdsc_enable/gdsc_disable path would be recursive and cause a
    lockdep splat. Dmitry alluded to this too.
    
    Bjorn pointed to stuff being done lower in the gdsc_register() routine that
    might be a starting point.
    
    I iterated around that idea and came up with patch #3. When a gdsc has no
    parent and the pd_list is non-NULL then attach that orphan GDSC to the
    clock controller power-domain list.
    
    Existing subdomain code in gdsc_register() will connect the parent GDSCs in
    the clock-controller to the clock-controller subdomain, the new code here
    does that same job for a list of power-domains the clock controller depends
    on.
    
    To Dmitry's point about MMCX and MCX dependencies for the registers inside
    of the clock controller, I have switched off all references in a test dtsi
    and confirmed that accessing the clock-controller regs themselves isn't
    required.
    
    On the second point I also verified my test branch with lockdep on which
    was a concern with the pm_domain version of this solution but I wanted to
    cover it anyway with the new approach for completeness sake.
    
    Here's the item-by-item list of changes:
    
    - Adds a patch to capture pm_genpd_add_subdomain() result code - Bryan
    - Changes changelog of second patch to remove singleton and generally
      to make the commit log easier to understand - Bjorn
    - Uses demv_pm_domain_attach_list - Vlad
    - Changes error check to if (ret < 0 && ret != -EEXIST) - Vlad
    - Retains passing &pd_data instead of NULL - because NULL doesn't do
      the same thing - Bryan/Vlad
    - Retains standalone function qcom_cc_pds_attach() because the pd_data
      enumeration looks neater in a standalone function - Bryan/Vlad
    - Drops pm_runtime in favour of gdsc_add_subdomain_list() for each
      power-domain in the pd_list.
      The pd_list will be whatever is pointed to by power-domains = <>
      in the dtsi - Bjorn
    - Link to v1: https://lore.kernel.org/r/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-v1-0-b7a2bd82ba37@linaro.org
    
    v1:
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (3):
          clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
          clk: qcom: common: Add support for power-domain attachment
          clk: qcom: Support attaching GDSCs to multiple parents
    
     drivers/clk/qcom/common.c | 10 ++++++++++
     drivers/clk/qcom/gdsc.c   | 41 +++++++++++++++++++++++++++++++++++++++--
     drivers/clk/qcom/gdsc.h   |  1 +
     3 files changed, 50 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v4
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    v4:
    - Adds Bjorn's RB to first patch - Bjorn
    - Drops the 'd' in "and int" - Bjorn
    - Amends commit log of patch 3 to capture a number of open questions -
      Bjorn
    
    - Link to v3: https://lore.kernel.org/r/20241126-b4-linux-next-24-11-18-clock-multiple-power-domains-v3-0-836dad33521a@linaro.org
    
    v3:
    - Fixes commit log "per which" - Bryan
    - Link to v2: https://lore.kernel.org/r/20241125-b4-linux-next-24-11-18-clock-multiple-power-domains-v2-0-a5e7554d7e45@linaro.org
    
    v2:
    The main change in this version is Bjorn's pointing out that pm_runtime_*
    inside of the gdsc_enable/gdsc_disable path would be recursive and cause a
    lockdep splat. Dmitry alluded to this too.
    
    Bjorn pointed to stuff being done lower in the gdsc_register() routine that
    might be a starting point.
    
    I iterated around that idea and came up with patch #3. When a gdsc has no
    parent and the pd_list is non-NULL then attach that orphan GDSC to the
    clock controller power-domain list.
    
    Existing subdomain code in gdsc_register() will connect the parent GDSCs in
    the clock-controller to the clock-controller subdomain, the new code here
    does that same job for a list of power-domains the clock controller depends
    on.
    
    To Dmitry's point about MMCX and MCX dependencies for the registers inside
    of the clock controller, I have switched off all references in a test dtsi
    and confirmed that accessing the clock-controller regs themselves isn't
    required.
    
    On the second point I also verified my test branch with lockdep on which
    was a concern with the pm_domain version of this solution but I wanted to
    cover it anyway with the new approach for completeness sake.
    
    Here's the item-by-item list of changes:
    
    - Adds a patch to capture pm_genpd_add_subdomain() result code - Bryan
    - Changes changelog of second patch to remove singleton and generally
      to make the commit log easier to understand - Bjorn
    - Uses demv_pm_domain_attach_list - Vlad
    - Changes error check to if (ret < 0 && ret != -EEXIST) - Vlad
    - Retains passing &pd_data instead of NULL - because NULL doesn't do
      the same thing - Bryan/Vlad
    - Retains standalone function qcom_cc_pds_attach() because the pd_data
      enumeration looks neater in a standalone function - Bryan/Vlad
    - Drops pm_runtime in favour of gdsc_add_subdomain_list() for each
      power-domain in the pd_list.
      The pd_list will be whatever is pointed to by power-domains = <>
      in the dtsi - Bjorn
    - Link to v1: https://lore.kernel.org/r/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-v1-0-b7a2bd82ba37@linaro.org
    
    v1:
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (3):
          clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
          clk: qcom: common: Add support for power-domain attachment
          clk: qcom: Support attaching GDSCs to multiple parents
    
     drivers/clk/qcom/common.c | 21 +++++++++++++++++++++
     drivers/clk/qcom/gdsc.c   | 41 +++++++++++++++++++++++++++++++++++++++--
     drivers/clk/qcom/gdsc.h   |  1 +
     3 files changed, 61 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v3
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    v3:
    - Fixes commit log "per which" - Bryan
    - Link to v2: https://lore.kernel.org/r/20241125-b4-linux-next-24-11-18-clock-multiple-power-domains-v2-0-a5e7554d7e45@linaro.org
    
    v2:
    The main change in this version is Bjorn's pointing out that pm_runtime_*
    inside of the gdsc_enable/gdsc_disable path would be recursive and cause a
    lockdep splat. Dmitry alluded to this too.
    
    Bjorn pointed to stuff being done lower in the gdsc_register() routine that
    might be a starting point.
    
    I iterated around that idea and came up with patch #3. When a gdsc has no
    parent and the pd_list is non-NULL then attach that orphan GDSC to the
    clock controller power-domain list.
    
    Existing subdomain code in gdsc_register() will connect the parent GDSCs in
    the clock-controller to the clock-controller subdomain, the new code here
    does that same job for a list of power-domains the clock controller depends
    on.
    
    To Dmitry's point about MMCX and MCX dependencies for the registers inside
    of the clock controller, I have switched off all references in a test dtsi
    and confirmed that accessing the clock-controller regs themselves isn't
    required.
    
    On the second point I also verified my test branch with lockdep on which
    was a concern with the pm_domain version of this solution but I wanted to
    cover it anyway with the new approach for completeness sake.
    
    Here's the item-by-item list of changes:
    
    - Adds a patch to capture pm_genpd_add_subdomain() result code - Bryan
    - Changes changelog of second patch to remove singleton and generally
      to make the commit log easier to understand - Bjorn
    - Uses demv_pm_domain_attach_list - Vlad
    - Changes error check to if (ret < 0 && ret != -EEXIST) - Vlad
    - Retains passing &pd_data instead of NULL - because NULL doesn't do
      the same thing - Bryan/Vlad
    - Retains standalone function qcom_cc_pds_attach() because the pd_data
      enumeration looks neater in a standalone function - Bryan/Vlad
    - Drops pm_runtime in favour of gdsc_add_subdomain_list() for each
      power-domain in the pd_list.
      The pd_list will be whatever is pointed to by power-domains = <>
      in the dtsi - Bjorn
    - Link to v1: https://lore.kernel.org/r/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-v1-0-b7a2bd82ba37@linaro.org
    
    v1:
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (3):
          clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
          clk: qcom: common: Add support for power-domain attachment
          driver: clk: qcom: Support attaching subdomain list to multiple parents
    
     drivers/clk/qcom/common.c | 21 +++++++++++++++++++++
     drivers/clk/qcom/gdsc.c   | 41 +++++++++++++++++++++++++++++++++++++++--
     drivers/clk/qcom/gdsc.h   |  1 +
     3 files changed, 61 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v2
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    v2:
    The main change in this version is Bjorn's pointing out that pm_runtime_*
    inside of the gdsc_enable/gdsc_disable path would be recursive and cause a
    lockdep splat. Dmitry alluded to this too.
    
    Bjorn pointed to stuff being done lower in the gdsc_register() routine that
    might be a starting point.
    
    I iterated around that idea and came up with patch #3. When a gdsc has no
    parent and the pd_list is non-NULL then attach that orphan GDSC to the
    clock controller power-domain list.
    
    Existing subdomain code in gdsc_register() will connect the parent GDSCs in
    the clock-controller to the clock-controller subdomain, the new code here
    does that same job for a list of power-domains the clock controller depends
    on.
    
    To Dmitry's point about MMCX and MCX dependencies for the registers inside
    of the clock controller, I have switched off all references in a test dtsi
    and confirmed that accessing the clock-controller regs themselves isn't
    required.
    
    On the second point I also verified my test branch with lockdep on which
    was a concern with the pm_domain version of this solution but I wanted to
    cover it anyway with the new approach for completeness sake.
    
    Here's the item-by-item list of changes:
    
    - Adds a patch to capture pm_genpd_add_subdomain() result code - Bryan
    - Changes changelog of second patch to remove singleton and generally
      to make the commit log easier to understand - Bjorn
    - Uses demv_pm_domain_attach_list - Vlad
    - Changes error check to if (ret < 0 && ret != -EEXIST) - Vlad
    - Retains passing &pd_data instead of NULL - because NULL doesn't do
      the same thing - Bryan/Vlad
    - Retains standalone function qcom_cc_pds_attach() because the pd_data
      enumeration looks neater in a standalone function - Bryan/Vlad
    - Drops pm_runtime in favour of gdsc_add_subdomain_list() for each
      power-domain in the pd_list.
      The pd_list will be whatever is pointed to by power-domains = <>
      in the dtsi - Bjorn
    - Link to v1: https://lore.kernel.org/r/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-v1-0-b7a2bd82ba37@linaro.org
    
    v1:
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (3):
          clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
          clk: qcom: common: Add support for power-domain attachment
          driver: clk: qcom: Support attaching subdomain list to multiple parents
    
     drivers/clk/qcom/common.c | 21 +++++++++++++++++++++
     drivers/clk/qcom/gdsc.c   | 41 +++++++++++++++++++++++++++++++++++++++--
     drivers/clk/qcom/gdsc.h   |  1 +
     3 files changed, 61 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • sent/20241119-b4-linux-next-24-11-18-dtsi-x1e80100-camss-82a63736d072-v1
    Add dt-bindings and dtsi changes for CAMSS on x1e80100 silicon
    
    This series adds dt-bindings and dtsi for CAMSS on x1e80100.
    
    The primary difference between x1e80100 and other platforms is a new VFE
    and CSID pair at version 680.
    
    Some minor driver churn will be required to support outside of the new VFE
    and CSID blocks but nothing too major.
    
    The CAMCC in this silicon requires two, not one power-domain requiring
    either this fix I've proposed here or something similar:
    
    https://lore.kernel.org/linux-arm-msm/bad60452-41b3-42fb-acba-5b7226226d2d@linaro.org/T/#t
    
    That doesn't gate adoption of the binding description though.
    
    A working tree in progress can be found here:
    https://git.codelinaro.org/bryan.odonoghue/kernel/-/tree/x1e80100-6.12-rc7+camss?ref_type=heads
    
    To: Loic Poulain <loic.poulain@linaro.org>
    To: Robert Foss <rfoss@kernel.org>
    To: Andi Shyti <andi.shyti@kernel.org>
    To: Rob Herring <robh@kernel.org>
    To: Krzysztof Kozlowski <krzk+dt@kernel.org>
    To: Conor Dooley <conor+dt@kernel.org>
    To: Todor Tomov <todor.too@gmail.com>
    To: Mauro Carvalho Chehab <mchehab@kernel.org>
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    To: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    To: Jagadeesh Kona <quic_jkona@quicinc.com>
    To: Konrad Dybcio <konradybcio@kernel.org>
    Cc: linux-i2c@vger.kernel.org
    Cc: linux-arm-msm@vger.kernel.org
    Cc: devicetree@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-media@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (6):
          dt-bindings: i2c: qcom-cci: Document x1e80100 compatible
          dt-bindings: media: Add qcom,x1e80100-camss binding
          dt-bindings: clock: qcom: Add second power-domain to CAMCC
          arm64: dts: qcom: x1e80100: Add CAMCC block definition
          arm64: dts: qcom: x1e80100: Add CCI definitions
          arm64: dts: qcom: x1e80100: Add CAMSS block definition
    
     .../bindings/clock/qcom,sm8450-camcc.yaml          |   5 +-
     .../devicetree/bindings/i2c/qcom,i2c-cci.yaml      |   2 +
     .../bindings/media/qcom,x1e80100-camss.yaml        | 354 ++++++++++++++++++++
     arch/arm64/boot/dts/qcom/x1e80100.dtsi             | 359 +++++++++++++++++++++
     4 files changed, 718 insertions(+), 2 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241119-b4-linux-next-24-11-18-dtsi-x1e80100-camss-82a63736d072
    
    Best regards,
  • sent/20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a-v1
    clk: qcom: Add support for multiple power-domains for a clock controller.
    
    On x1e80100 and it's SKUs the Camera Clock Controller - CAMCC has
    multiple power-domains which power it. Usually with a single power-domain
    the core platform code will automatically switch on the singleton
    power-domain for you. If you have multiple power-domains for a device, in
    this case the clock controller, you need to switch those power-domains
    on/off yourself.
    
    The clock controllers can also contain Global Distributed
    Switch Controllers - GDSCs which themselves can be referenced from dtsi
    nodes ultimately triggering a gdsc_en() in drivers/clk/qcom/gdsc.c.
    
    As an example:
    
    cci0: cci@ac4a000 {
    	power-domains = <&camcc TITAN_TOP_GDSC>;
    };
    
    This series adds the support to attach a power-domain list to the
    clock-controllers and the GDSCs those controllers provide so that in the
    case of the above example gdsc_toggle_logic() will trigger the power-domain
    list with pm_runtime_resume_and_get() and pm_runtime_put_sync()
    respectively.
    
    To: Bjorn Andersson <andersson@kernel.org>
    To: Michael Turquette <mturquette@baylibre.com>
    To: Stephen Boyd <sboyd@kernel.org>
    Cc: linux-arm-msm@vger.kernel.org
    Cc: linux-clk@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
    
    ---
    Bryan O'Donoghue (2):
          clk: qcom: common: Add support for power-domain attachment
          clk: qcom: gdsc: Add pm_runtime hooks
    
     drivers/clk/qcom/common.c | 24 ++++++++++++++++++++++++
     drivers/clk/qcom/gdsc.c   | 26 ++++++++++++++++++--------
     drivers/clk/qcom/gdsc.h   |  2 ++
     3 files changed, 44 insertions(+), 8 deletions(-)
    ---
    base-commit: 744cf71b8bdfcdd77aaf58395e068b7457634b2c
    change-id: 20241118-b4-linux-next-24-11-18-clock-multiple-power-domains-a5f994dc452a
    
    Best regards,
  • v6.12
    adc21867 · Linux 6.12 ·
    Linux 6.12
    
  • next-20241115
    next-20241115