"Subrahmanya, Chaithrika" <[EMAIL PROTECTED]> writes:

>> [EMAIL PROTECTED] writes:
>> 
>> > From: Chaithrika U S <[EMAIL PROTECTED]>
>> >
>> > Disables the DM646x EMAC interrupts in the initialization of EMAC
>> driver.
>> > DM646x EMAC interrupts were not being freed correctly on EMAC stop, this
>> has
>> > been resolved in EMAC device stop function.
>> >
>> > Signed-off-by: Chaithrika U S <[EMAIL PROTECTED]>
>> 
>> Have you validated this change on dm644x also?
>
> Yes, I have validated the change on DM644x too.
>

OK, I have pushed this patch.  Thanks for the clarification.

Kevin

>> 
>> For shared drivers, it will be helpful in the future if the patch
>> description also describes which platforms the patch was tested on.
>> 
> I will take care of this in future.
>
> Chaithrika
>
>> Kevin
>> 
>> > ---
>> >  drivers/net/davinci_emac.c |   12 ++++++++++--
>> >  1 files changed, 10 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
>> > index 62516c6..3e44232 100644
>> > --- a/drivers/net/davinci_emac.c
>> > +++ b/drivers/net/davinci_emac.c
>> > @@ -2252,7 +2252,7 @@ static int emac_hw_enable(struct emac_priv *priv)
>> >    cpu_relax();
>> >
>> >   /* Disable interrupt & Set pacing for more interrupts initially */
>> > - emac_ctrl_write(EMAC_CTRL_EWCTL, 0x0);
>> > + emac_int_disable(priv);
>> >
>> >   /* Set speed and duplex mode */
>> >   priv->duplex = EMAC_DUPLEX_UNKNOWN;
>> > @@ -2603,6 +2603,9 @@ rollback:
>> >   */
>> >  static int emac_dev_stop(struct net_device *ndev)
>> >  {
>> > + struct resource *res;
>> > + int i = 0;
>> > + int irq_num;
>> >   struct emac_priv *priv = netdev_priv(ndev);
>> >
>> >   /* inform the upper layers. */
>> > @@ -2622,7 +2625,12 @@ static int emac_dev_stop(struct net_device *ndev)
>> >   emac_write(EMAC_SOFTRESET, 1);
>> >
>> >   /* Free IRQ */
>> > - free_irq(ndev->irq, priv->ndev);
>> > + while ((res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, i)))
>> {
>> > +  for (irq_num = res->start; irq_num <= res->end; irq_num++)
>> > +   free_irq(irq_num, priv->ndev);
>> > +  i++;
>> > + }
>> > +
>> >   if (netif_msg_drv(priv))
>> >    dev_notice(EMAC_DEV, "DaVinci EMAC: %s stopped\n", ndev-
>> >name);
>> >
>> > --
>> > 1.5.4.1
>> >
>> > _______________________________________________
>> > Davinci-linux-open-source mailing list
>> > [email protected]
>> > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
>> 
>> _______________________________________________
>> Davinci-linux-open-source mailing list
>> [email protected]
>> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
>
>> [EMAIL PROTECTED] writes:
>> 
>> > From: Chaithrika U S <[EMAIL PROTECTED]>
>> >
>> > Disables the DM646x EMAC interrupts in the initialization of EMAC
>> driver.
>> > DM646x EMAC interrupts were not being freed correctly on EMAC stop, this
>> has
>> > been resolved in EMAC device stop function.
>> >
>> > Signed-off-by: Chaithrika U S <[EMAIL PROTECTED]>
>> 
>> Have you validated this change on dm644x also?
> Yes, I have tested the change on DM644x too.
>> 
>> For shared drivers, it will be helpful in the future if the patch
>> description also describes which platforms the patch was tested on.
>> 
> I will take care of this in future.
> Chaithrika
>> Kevin
>> 
>> > ---
>> >  drivers/net/davinci_emac.c |   12 ++++++++++--
>> >  1 files changed, 10 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
>> > index 62516c6..3e44232 100644
>> > --- a/drivers/net/davinci_emac.c
>> > +++ b/drivers/net/davinci_emac.c
>> > @@ -2252,7 +2252,7 @@ static int emac_hw_enable(struct emac_priv *priv)
>> >    cpu_relax();
>> >
>> >   /* Disable interrupt & Set pacing for more interrupts initially */
>> > - emac_ctrl_write(EMAC_CTRL_EWCTL, 0x0);
>> > + emac_int_disable(priv);
>> >
>> >   /* Set speed and duplex mode */
>> >   priv->duplex = EMAC_DUPLEX_UNKNOWN;
>> > @@ -2603,6 +2603,9 @@ rollback:
>> >   */
>> >  static int emac_dev_stop(struct net_device *ndev)
>> >  {
>> > + struct resource *res;
>> > + int i = 0;
>> > + int irq_num;
>> >   struct emac_priv *priv = netdev_priv(ndev);
>> >
>> >   /* inform the upper layers. */
>> > @@ -2622,7 +2625,12 @@ static int emac_dev_stop(struct net_device *ndev)
>> >   emac_write(EMAC_SOFTRESET, 1);
>> >
>> >   /* Free IRQ */
>> > - free_irq(ndev->irq, priv->ndev);
>> > + while ((res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, i)))
>> {
>> > +  for (irq_num = res->start; irq_num <= res->end; irq_num++)
>> > +   free_irq(irq_num, priv->ndev);
>> > +  i++;
>> > + }
>> > +
>> >   if (netif_msg_drv(priv))
>> >    dev_notice(EMAC_DEV, "DaVinci EMAC: %s stopped\n", ndev-
>> >name);
>> >
>> > --
>> > 1.5.4.1
>> >
>> > _______________________________________________
>> > Davinci-linux-open-source mailing list
>> > [email protected]
>> > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
>> 
>> _______________________________________________
>> Davinci-linux-open-source mailing list
>> [email protected]
>> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to