Message ID | 20240603092757.71902-8-christophe.roullier@foss.st.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Series to deliver Ethernet for STM32MP13 | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Guessing tree name failed - patch did not apply |
On 03/06/2024 11.27, Christophe Roullier wrote: > @@ -259,13 +268,17 @@ static int stm32mp1_configure_pmcr(struct plat_stmmacenet_data *plat_dat) > > dev_dbg(dwmac->dev, "Mode %s", phy_modes(plat_dat->mac_interface)); > > + /* Shift value at correct ethernet MAC offset in SYSCFG_PMCSETR */ > + val <<= ffs(dwmac->mode_mask) - ffs(SYSCFG_MP1_ETH_MASK); > + > /* Need to update PMCCLRR (clear register) */ > - regmap_write(dwmac->regmap, reg + SYSCFG_PMCCLRR_OFFSET, > - dwmac->ops->syscfg_eth_mask); > + regmap_write(dwmac->regmap, dwmac->ops->syscfg_clr_off, > + dwmac->mode_mask); > > /* Update PMCSETR (set register) */ > return regmap_update_bits(dwmac->regmap, reg, > - dwmac->ops->syscfg_eth_mask, val); > + dwmac->mode_mask, val); > } > > static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat) This hunk is broken, and makes the patch not apply: Applying: net: ethernet: stmmac: add management of stm32mp13 for stm32 error: corrupt patch at line 70 The -259,13 seems correct, and the net lines added by previous hunks is indeed +9, but this hunk only adds three more lines than it removes, not four, so the +268,17 should have been +268,16. Have you manually edited this patch before sending? If so, please don't do that, it makes people waste a lot of time figuring out what is wrong. Also, please include a base-id in the cover letter so one knows what it applies to. Finally, I think you also need to sign-off on the patches you send authored by Marek. Rasmus
On 6/3/24 1:30 PM, Rasmus Villemoes wrote: > On 03/06/2024 11.27, Christophe Roullier wrote: > >> @@ -259,13 +268,17 @@ static int stm32mp1_configure_pmcr(struct plat_stmmacenet_data *plat_dat) >> >> dev_dbg(dwmac->dev, "Mode %s", phy_modes(plat_dat->mac_interface)); >> >> + /* Shift value at correct ethernet MAC offset in SYSCFG_PMCSETR */ >> + val <<= ffs(dwmac->mode_mask) - ffs(SYSCFG_MP1_ETH_MASK); >> + >> /* Need to update PMCCLRR (clear register) */ >> - regmap_write(dwmac->regmap, reg + SYSCFG_PMCCLRR_OFFSET, >> - dwmac->ops->syscfg_eth_mask); >> + regmap_write(dwmac->regmap, dwmac->ops->syscfg_clr_off, >> + dwmac->mode_mask); >> >> /* Update PMCSETR (set register) */ >> return regmap_update_bits(dwmac->regmap, reg, >> - dwmac->ops->syscfg_eth_mask, val); >> + dwmac->mode_mask, val); >> } >> >> static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat) > > This hunk is broken, and makes the patch not apply: > > Applying: net: ethernet: stmmac: add management of stm32mp13 for stm32 > error: corrupt patch at line 70 > > The -259,13 seems correct, and the net lines added by previous hunks is > indeed +9, but this hunk only adds three more lines than it removes, not > four, so the +268,17 should have been +268,16. > > Have you manually edited this patch before sending? If so, please don't > do that, it makes people waste a lot of time figuring out what is wrong. > > Also, please include a base-id in the cover letter so one knows what it > applies to. Just out of curiosity, I know one can generate cover letter from branch description with git branch --edit-description and git format-patch --cover-from-description= , but is there something to automatically fill in the merge base (I assume that's what you want) ? Or are you looking for git send-email --subject-prefix="net-next,PATCH" to fill in the net/net-next subject prefix ?
On 03/06/2024 15.01, Marek Vasut wrote: > On 6/3/24 1:30 PM, Rasmus Villemoes wrote: >> Also, please include a base-id in the cover letter so one knows what it >> applies to. > > Just out of curiosity, I know one can generate cover letter from branch > description with git branch --edit-description and git format-patch > --cover-from-description= , but is there something to automatically fill > in the merge base (I assume that's what you want) ? https://git-scm.com/docs/git-format-patch#_base_tree_information Seems to have been in git since v2.9 (2016ish). Rasmus
On 6/3/24 4:38 PM, Rasmus Villemoes wrote: > On 03/06/2024 15.01, Marek Vasut wrote: >> On 6/3/24 1:30 PM, Rasmus Villemoes wrote: > >>> Also, please include a base-id in the cover letter so one knows what it >>> applies to. >> >> Just out of curiosity, I know one can generate cover letter from branch >> description with git branch --edit-description and git format-patch >> --cover-from-description= , but is there something to automatically fill >> in the merge base (I assume that's what you want) ? > > https://git-scm.com/docs/git-format-patch#_base_tree_information > > Seems to have been in git since v2.9 (2016ish). Nice, thanks !
On 6/3/24 13:30, Rasmus Villemoes wrote: > On 03/06/2024 11.27, Christophe Roullier wrote: > >> @@ -259,13 +268,17 @@ static int stm32mp1_configure_pmcr(struct plat_stmmacenet_data *plat_dat) >> >> dev_dbg(dwmac->dev, "Mode %s", phy_modes(plat_dat->mac_interface)); >> >> + /* Shift value at correct ethernet MAC offset in SYSCFG_PMCSETR */ >> + val <<= ffs(dwmac->mode_mask) - ffs(SYSCFG_MP1_ETH_MASK); >> + >> /* Need to update PMCCLRR (clear register) */ >> - regmap_write(dwmac->regmap, reg + SYSCFG_PMCCLRR_OFFSET, >> - dwmac->ops->syscfg_eth_mask); >> + regmap_write(dwmac->regmap, dwmac->ops->syscfg_clr_off, >> + dwmac->mode_mask); >> >> /* Update PMCSETR (set register) */ >> return regmap_update_bits(dwmac->regmap, reg, >> - dwmac->ops->syscfg_eth_mask, val); >> + dwmac->mode_mask, val); >> } >> >> static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat) > This hunk is broken, and makes the patch not apply: > > Applying: net: ethernet: stmmac: add management of stm32mp13 for stm32 > error: corrupt patch at line 70 > > The -259,13 seems correct, and the net lines added by previous hunks is > indeed +9, but this hunk only adds three more lines than it removes, not > four, so the +268,17 should have been +268,16. > > Have you manually edited this patch before sending? If so, please don't > do that, it makes people waste a lot of time figuring out what is wrong. Hi Rasmus, Yes sorry :-( > > Also, please include a base-id in the cover letter so one knows what it > applies to. > > Finally, I think you also need to sign-off on the patches you send > authored by Marek. Yes, you are right > > Rasmus >
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c index 260b5eb27b07c..10c199729ec58 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c @@ -84,12 +84,14 @@ struct stm32_dwmac { struct clk *clk_eth_ck; struct clk *clk_ethstp; struct clk *syscfg_clk; + bool is_mp13; int ext_phyclk; int enable_eth_ck; int eth_clk_sel_reg; int eth_ref_clk_sel_reg; int irq_pwr_wakeup; u32 mode_reg; /* MAC glue-logic mode register */ + u32 mode_mask; struct regmap *regmap; u32 speed; const struct stm32_ops *ops; @@ -102,8 +104,8 @@ struct stm32_ops { void (*resume)(struct stm32_dwmac *dwmac); int (*parse_data)(struct stm32_dwmac *dwmac, struct device *dev); - u32 syscfg_eth_mask; bool clk_rx_enable_in_suspend; + u32 syscfg_clr_off; }; static int stm32_dwmac_clk_enable(struct stm32_dwmac *dwmac, bool resume) @@ -230,7 +232,14 @@ static int stm32mp1_configure_pmcr(struct plat_stmmacenet_data *plat_dat) switch (plat_dat->mac_interface) { case PHY_INTERFACE_MODE_MII: - val = SYSCFG_PMCR_ETH_SEL_MII; + /* + * STM32MP15xx supports both MII and GMII, STM32MP13xx MII only. + * SYSCFG_PMCSETR ETH_SELMII is present only on STM32MP15xx and + * acts as a selector between 0:GMII and 1:MII. As STM32MP13xx + * supports only MII, ETH_SELMII is not present. + */ + if (!dwmac->is_mp13) /* Select MII mode on STM32MP15xx */ + val |= SYSCFG_PMCR_ETH_SEL_MII; break; case PHY_INTERFACE_MODE_GMII: val = SYSCFG_PMCR_ETH_SEL_GMII; @@ -259,13 +268,17 @@ static int stm32mp1_configure_pmcr(struct plat_stmmacenet_data *plat_dat) dev_dbg(dwmac->dev, "Mode %s", phy_modes(plat_dat->mac_interface)); + /* Shift value at correct ethernet MAC offset in SYSCFG_PMCSETR */ + val <<= ffs(dwmac->mode_mask) - ffs(SYSCFG_MP1_ETH_MASK); + /* Need to update PMCCLRR (clear register) */ - regmap_write(dwmac->regmap, reg + SYSCFG_PMCCLRR_OFFSET, - dwmac->ops->syscfg_eth_mask); + regmap_write(dwmac->regmap, dwmac->ops->syscfg_clr_off, + dwmac->mode_mask); /* Update PMCSETR (set register) */ return regmap_update_bits(dwmac->regmap, reg, - dwmac->ops->syscfg_eth_mask, val); + dwmac->mode_mask, val); } static int stm32mp1_set_mode(struct plat_stmmacenet_data *plat_dat) @@ -306,7 +319,7 @@ static int stm32mcu_set_mode(struct plat_stmmacenet_data *plat_dat)
Add Ethernet support for STM32MP13. STM32MP13 is STM32 SOC with 2 GMACs instances. GMAC IP version is SNPS 4.20. GMAC IP configure with 1 RX and 1 TX queue. DMA HW capability register supported RX Checksum Offload Engine supported TX Checksum insertion supported Wake-Up On Lan supported TSO supported Signed-off-by: Christophe Roullier <christophe.roullier@foss.st.com> --- .../net/ethernet/stmicro/stmmac/dwmac-stm32.c | 51 +++++++++++++++---- 1 file changed, 41 insertions(+), 10 deletions(-) dev_dbg(dwmac->dev, "Mode %s", phy_modes(plat_dat->mac_interface)); return regmap_update_bits(dwmac->regmap, reg, - dwmac->ops->syscfg_eth_mask, val << 23); + SYSCFG_MCU_ETH_MASK, val << 23); } static void stm32_dwmac_clk_disable(struct stm32_dwmac *dwmac, bool suspend) @@ -351,8 +364,15 @@ static int stm32_dwmac_parse_data(struct stm32_dwmac *dwmac, return PTR_ERR(dwmac->regmap); err = of_property_read_u32_index(np, "st,syscon", 1, &dwmac->mode_reg); - if (err) + if (err) { dev_err(dev, "Can't get sysconfig mode offset (%d)\n", err); + return err; + } + + dwmac->mode_mask = SYSCFG_MP1_ETH_MASK; + err = of_property_read_u32_index(np, "st,syscon", 2, &dwmac->mode_mask); + if (err) + pr_debug("Warning sysconfig register mask not set\n"); return err; } @@ -364,6 +384,8 @@ static int stm32mp1_parse_data(struct stm32_dwmac *dwmac, struct device_node *np = dev->of_node; int err = 0; + dwmac->is_mp13 = of_device_is_compatible(np, "st,stm32mp13-dwmac"); + /* Ethernet PHY have no crystal */ dwmac->ext_phyclk = of_property_read_bool(np, "st,ext-phyclk"); @@ -543,8 +565,7 @@ static SIMPLE_DEV_PM_OPS(stm32_dwmac_pm_ops, stm32_dwmac_suspend, stm32_dwmac_resume); static struct stm32_ops stm32mcu_dwmac_data = { - .set_mode = stm32mcu_set_mode, - .syscfg_eth_mask = SYSCFG_MCU_ETH_MASK + .set_mode = stm32mcu_set_mode }; static struct stm32_ops stm32mp1_dwmac_data = { @@ -552,13 +573,23 @@ static struct stm32_ops stm32mp1_dwmac_data = { .suspend = stm32mp1_suspend, .resume = stm32mp1_resume, .parse_data = stm32mp1_parse_data, - .syscfg_eth_mask = SYSCFG_MP1_ETH_MASK, + .syscfg_clr_off = 0x44, + .clk_rx_enable_in_suspend = true +}; + +static struct stm32_ops stm32mp13_dwmac_data = { + .set_mode = stm32mp1_set_mode, + .suspend = stm32mp1_suspend, + .resume = stm32mp1_resume, + .parse_data = stm32mp1_parse_data, + .syscfg_clr_off = 0x08, .clk_rx_enable_in_suspend = true }; static const struct of_device_id stm32_dwmac_match[] = { { .compatible = "st,stm32-dwmac", .data = &stm32mcu_dwmac_data}, { .compatible = "st,stm32mp1-dwmac", .data = &stm32mp1_dwmac_data}, + { .compatible = "st,stm32mp13-dwmac", .data = &stm32mp13_dwmac_data}, { } }; MODULE_DEVICE_TABLE(of, stm32_dwmac_match);