diff mbox

[U-Boot,1/2] net: sh_eth: add cache handling

Message ID 4D33C0DA.4000701@renesas.com
State Accepted, archived
Headers show

Commit Message

Yoshihiro Shimoda Jan. 17, 2011, 4:08 a.m. UTC
Some CPU needs cache handling. So this patch add the config of
CONFIG_SH_ETHER_CACHE_WRITEBACK, and it calls wback function.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/net/sh_eth.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

Comments

Nobuhiro Iwamatsu Jan. 17, 2011, 1:05 p.m. UTC | #1
On Mon, Jan 17, 2011 at 01:08:58PM +0900, Yoshihiro Shimoda wrote:
> Some CPU needs cache handling. So this patch add the config of
> CONFIG_SH_ETHER_CACHE_WRITEBACK, and it calls wback function.
> 
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> ---
>  drivers/net/sh_eth.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
> 
Applied, thank.
  Nobuhiro
Wolfgang Denk Jan. 18, 2011, 9:31 a.m. UTC | #2
Dear Nobuhiro Iwamatsu,

In message <20110117130531.GD13819@chimagu.nigauri.org> you wrote:
> On Mon, Jan 17, 2011 at 01:08:58PM +0900, Yoshihiro Shimoda wrote:
> > Some CPU needs cache handling. So this patch add the config of
> > CONFIG_SH_ETHER_CACHE_WRITEBACK, and it calls wback function.
> > 
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> > ---
> >  drivers/net/sh_eth.c |    9 +++++++++
> >  1 files changed, 9 insertions(+), 0 deletions(-)
> > 
> Applied, thank.

You are a bit fast.  Network code should go throughthe network
custodian, or at least it requires his ACK.

Best regards,

Wolfgang Denk
Wolfgang Denk Jan. 18, 2011, 9:32 a.m. UTC | #3
Dear Yoshihiro Shimoda,

In message <4D33C0DA.4000701@renesas.com> you wrote:
> Some CPU needs cache handling. So this patch add the config of
> CONFIG_SH_ETHER_CACHE_WRITEBACK, and it calls wback function.
> 
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
> ---
>  drivers/net/sh_eth.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
> index 86cc324..53d918d 100644
> --- a/drivers/net/sh_eth.c
> +++ b/drivers/net/sh_eth.c
> @@ -36,6 +36,12 @@
>  #ifndef CONFIG_SH_ETHER_PHY_ADDR
>  # error "Please define CONFIG_SH_ETHER_PHY_ADDR"
>  #endif
> +#ifdef CONFIG_SH_ETHER_CACHE_WRITEBACK
> +#define flush_cache_wback(addr, len)	\
> +			dcache_wback_range((u32)addr, (u32)(addr + len - 1))
> +#else
> +#define flush_cache_wback(...)
> +#endif

New config options must be documented in the README.

Best regards,

Wolfgang Denk
Yoshihiro Shimoda Jan. 19, 2011, 8:01 a.m. UTC | #4
Dear Wolfgang Denk,

2011/01/18 18:32, Wolfgang Denk wrote:
> Dear Yoshihiro Shimoda,
> 
> In message <4D33C0DA.4000701@renesas.com> you wrote:
>> --- a/drivers/net/sh_eth.c
>> +++ b/drivers/net/sh_eth.c
>> @@ -36,6 +36,12 @@
>>  #ifndef CONFIG_SH_ETHER_PHY_ADDR
>>  # error "Please define CONFIG_SH_ETHER_PHY_ADDR"
>>  #endif
>> +#ifdef CONFIG_SH_ETHER_CACHE_WRITEBACK
>> +#define flush_cache_wback(addr, len)	\
>> +			dcache_wback_range((u32)addr, (u32)(addr + len - 1))
>> +#else
>> +#define flush_cache_wback(...)
>> +#endif
> 
> New config options must be documented in the README.
> 
I will document about this option in the README.
The README isn't written about the driver now,
so I will document about this driver first.

Best regards,
Yoshihiro Shimoda
diff mbox

Patch

diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c
index 86cc324..53d918d 100644
--- a/drivers/net/sh_eth.c
+++ b/drivers/net/sh_eth.c
@@ -36,6 +36,12 @@ 
 #ifndef CONFIG_SH_ETHER_PHY_ADDR
 # error "Please define CONFIG_SH_ETHER_PHY_ADDR"
 #endif
+#ifdef CONFIG_SH_ETHER_CACHE_WRITEBACK
+#define flush_cache_wback(addr, len)	\
+			dcache_wback_range((u32)addr, (u32)(addr + len - 1))
+#else
+#define flush_cache_wback(...)
+#endif

 #define SH_ETH_PHY_DELAY 50000

@@ -197,6 +203,7 @@  int sh_eth_send(struct eth_device *dev, volatile void *packet, int len)
 	}

 	/* Update tx descriptor */
+	flush_cache_wback(packet, len);
 	port_info->tx_desc_cur->td2 = ADDR_TO_PHY(packet);
 	port_info->tx_desc_cur->td1 = len << 16;
 	/* Must preserve the end of descriptor list indication */
@@ -312,6 +319,7 @@  static int sh_eth_tx_desc_init(struct sh_eth_dev *eth)

 	tmp_addr = (u32) (((int)port_info->tx_desc_malloc + TX_DESC_SIZE - 1) &
 			  ~(TX_DESC_SIZE - 1));
+	flush_cache_wback(tmp_addr, NUM_TX_DESC * sizeof(struct tx_desc_s));
 	/* Make sure we use a P2 address (non-cacheable) */
 	port_info->tx_desc_base = (struct tx_desc_s *)ADDR_TO_P2(tmp_addr);
 	port_info->tx_desc_cur = port_info->tx_desc_base;
@@ -361,6 +369,7 @@  static int sh_eth_rx_desc_init(struct sh_eth_dev *eth)

 	tmp_addr = (u32) (((int)port_info->rx_desc_malloc + RX_DESC_SIZE - 1) &
 			  ~(RX_DESC_SIZE - 1));
+	flush_cache_wback(tmp_addr, NUM_RX_DESC * sizeof(struct rx_desc_s));
 	/* Make sure we use a P2 address (non-cacheable) */
 	port_info->rx_desc_base = (struct rx_desc_s *)ADDR_TO_P2(tmp_addr);