On 03.05.2018 14:20, Harini Katakam wrote: > Hi Claudiu, > > On Thu, May 3, 2018 at 3:39 PM, Claudiu Beznea > <[email protected]> wrote: >> >> >> On 22.03.2018 15:51, [email protected] wrote: >>> From: Harini Katakam <[email protected]> >>> >>> When macb device is suspended and system is powered down, the clocks >>> are removed and hence macb should be closed gracefully and restored >>> upon resume. >> >> Is this a power saving mode which shut down the core? > > The Ethernet IP is suspended and a majority of the SoC is shut down, yes. > > <snip> >>> + netif_device_detach(netdev); >>> + } else { >>> + netif_device_detach(netdev); >>> + for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, >>> ++queue) >>> + napi_disable(&queue->napi); >>> + phy_stop(netdev->phydev); >>> + phy_suspend(netdev->phydev); >>> + spin_lock_irqsave(&bp->lock, flags); >>> + macb_reset_hw(bp); >>> + spin_unlock_irqrestore(&bp->lock, flags); >> >> Wouldn't be simple to just call macb_close() here? > > <snip> >> >> Wouln't be simpler to call macb_open() here? > > No, I think that would be excessive for suspend. This does just > enough to put the IP into suspend and cut off clocks. > For ex., the RX and TX buffers are not freed and allocated again > in this cycle, just the buffer descriptors. >
For me looks simpler to just call macb_close()/macb_open() in suspend/resume hooks. Maybe this doesn't fit to your needs... But most of the code you added in suspend/resume hooks is already present in macb_open()/macb_close(), except the TX/RX buffers alloc/free. SAMA5D2 also uses this IP. SAMA5d2 has a power saving mode where core power is cut off (including this IP). We are using macb_open()/macb_close() + restoring all few other registers after this (by calling macb_set_rx_mode() and a variant of macb_set_features() and few other registers). This is not yet mainlined. I was intending to send soon a version. Thank you, Claudiu > Regards, > Harini >
