From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Roese Date: Wed, 22 Jan 2014 17:55:06 +0100 Subject: [U-Boot] [PATCH v3] net/designware: make driver compatible with data cache In-Reply-To: <1390409349-9406-1-git-send-email-abrodkin@synopsys.com> References: <1390409349-9406-1-git-send-email-abrodkin@synopsys.com> Message-ID: <52DFF7EA.9050701@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Alexey, On 22.01.2014 17:49, Alexey Brodkin wrote: > From: Alexey Brodkin > > Up until now this driver only worked with data cache disabled. > To make it work with enabled data cache following changes were required: > > * Flush Tx/Rx buffer descriptors their modification > * Invalidate Tx/Rx buffer descriptors before reading its values > * Flush cache for data passed from CPU to GMAC > * Invalidate cache for data passed from GMAC to CPU > > Signed-off-by: Alexey Brodkin A small nitpicking comment below. > Cc: Joe Hershberger > Cc: Vipin Kumar > Cc: Stefan Roese > Cc: Mischa Jonker > Cc: Shiraz Hashim > Cc: Albert ARIBAUD > Cc: Amit Virdi > Cc: Sonic Zhang > > Compared to v2: > 1. Removed trailing white space > --- > drivers/net/designware.c | 53 +++++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 50 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/designware.c b/drivers/net/designware.c > index 22155b4..c0c8659 100644 > --- a/drivers/net/designware.c > +++ b/drivers/net/designware.c > @@ -51,6 +51,11 @@ static void tx_descs_init(struct eth_device *dev) > /* Correcting the last pointer of the chain */ > desc_p->dmamac_next = &desc_table_p[0]; > > + /* Flush all Tx buffer descriptors at once */ > + flush_dcache_range((unsigned int)priv->tx_mac_descrtable, > + (unsigned int)priv->tx_mac_descrtable + > + sizeof(priv->tx_mac_descrtable)); > + > writel((ulong)&desc_table_p[0], &dma_p->txdesclistaddr); > } > > @@ -63,6 +68,15 @@ static void rx_descs_init(struct eth_device *dev) > struct dmamacdescr *desc_p; > u32 idx; > > + /* Before passing buffers to GMAC we need to make sure zeros > + * written there right after "priv" structure allocation were > + * flushed into RAM. > + * Otherwise there's a chance to get some of them flushed in RAM when > + * GMAC is already pushing data to RAM via DMA. This way incoming from > + * GMAC data will be corrupted. */ Please use this recommended multi-line comment style: /* * Before ... * ... * * ... will be corrupted. */ Thanks, Stefan