forked from Minki/linux
Merge branch 'Unique-mv88e6xxx-IRQ-names'
Andrew Lunn says: ==================== Unique mv88e6xxx IRQ names There are a few boards which have multiple mv88e6xxx switches. With such boards, it can be hard to determine which interrupts belong to which switches. Make the interrupt names unique by including the device name in the interrupt name. For the SERDES interrupt, also include the port number. As a result of these patches ZII devel C looks like: 50: 0 gpio-vf610 27 Level mv88e6xxx-0.1:00 54: 0 mv88e6xxx-g1 3 Edge mv88e6xxx-0.1:00-g1-atu-prob 56: 0 mv88e6xxx-g1 5 Edge mv88e6xxx-0.1:00-g1-vtu-prob 58: 0 mv88e6xxx-g1 7 Edge mv88e6xxx-0.1:00-g2 61: 0 mv88e6xxx-g2 1 Edge !mdio-mux!mdio@1!switch@0!mdio:01 62: 0 mv88e6xxx-g2 2 Edge !mdio-mux!mdio@1!switch@0!mdio:02 63: 0 mv88e6xxx-g2 3 Edge !mdio-mux!mdio@1!switch@0!mdio:03 64: 0 mv88e6xxx-g2 4 Edge !mdio-mux!mdio@1!switch@0!mdio:04 70: 0 mv88e6xxx-g2 10 Edge mv88e6xxx-0.1:00-serdes-10 75: 0 mv88e6xxx-g2 15 Edge mv88e6xxx-0.1:00-watchdog 76: 5 gpio-vf610 26 Level mv88e6xxx-0.2:00 80: 0 mv88e6xxx-g1 3 Edge mv88e6xxx-0.2:00-g1-atu-prob 82: 0 mv88e6xxx-g1 5 Edge mv88e6xxx-0.2:00-g1-vtu-prob 84: 4 mv88e6xxx-g1 7 Edge mv88e6xxx-0.2:00-g2 87: 2 mv88e6xxx-g2 1 Edge !mdio-mux!mdio@2!switch@0!mdio:01 88: 0 mv88e6xxx-g2 2 Edge !mdio-mux!mdio@2!switch@0!mdio:02 89: 0 mv88e6xxx-g2 3 Edge !mdio-mux!mdio@2!switch@0!mdio:03 90: 0 mv88e6xxx-g2 4 Edge !mdio-mux!mdio@2!switch@0!mdio:04 95: 3 mv88e6xxx-g2 9 Edge mv88e6xxx-0.2:00-serdes-9 96: 0 mv88e6xxx-g2 10 Edge mv88e6xxx-0.2:00-serdes-10 101: 0 mv88e6xxx-g2 15 Edge mv88e6xxx-0.2:00-watchdog Interrupt names like !mdio-mux!mdio@2!switch@0!mdio:01 are created by phylib for the integrated PHYs. The mv88e6xxx driver does not determine these names. ==================== Tested-by: Chris Healy <cphealy@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
1b935183ae
@ -340,11 +340,14 @@ static int mv88e6xxx_g1_irq_setup(struct mv88e6xxx_chip *chip)
|
||||
*/
|
||||
irq_set_lockdep_class(chip->irq, &lock_key, &request_key);
|
||||
|
||||
snprintf(chip->irq_name, sizeof(chip->irq_name),
|
||||
"mv88e6xxx-%s", dev_name(chip->dev));
|
||||
|
||||
mv88e6xxx_reg_unlock(chip);
|
||||
err = request_threaded_irq(chip->irq, NULL,
|
||||
mv88e6xxx_g1_irq_thread_fn,
|
||||
IRQF_ONESHOT | IRQF_SHARED,
|
||||
dev_name(chip->dev), chip);
|
||||
chip->irq_name, chip);
|
||||
mv88e6xxx_reg_lock(chip);
|
||||
if (err)
|
||||
mv88e6xxx_g1_irq_free_common(chip);
|
||||
@ -2303,10 +2306,14 @@ static int mv88e6xxx_serdes_irq_request(struct mv88e6xxx_chip *chip, int port,
|
||||
if (!irq)
|
||||
return 0;
|
||||
|
||||
snprintf(dev_id->serdes_irq_name, sizeof(dev_id->serdes_irq_name),
|
||||
"mv88e6xxx-%s-serdes-%d", dev_name(chip->dev), port);
|
||||
|
||||
/* Requesting the IRQ will trigger IRQ callbacks, so release the lock */
|
||||
mv88e6xxx_reg_unlock(chip);
|
||||
err = request_threaded_irq(irq, NULL, mv88e6xxx_serdes_irq_thread_fn,
|
||||
IRQF_ONESHOT, "mv88e6xxx-serdes", dev_id);
|
||||
IRQF_ONESHOT, dev_id->serdes_irq_name,
|
||||
dev_id);
|
||||
mv88e6xxx_reg_lock(chip);
|
||||
if (err)
|
||||
return err;
|
||||
|
@ -236,6 +236,7 @@ struct mv88e6xxx_port {
|
||||
bool mirror_ingress;
|
||||
bool mirror_egress;
|
||||
unsigned int serdes_irq;
|
||||
char serdes_irq_name[32];
|
||||
};
|
||||
|
||||
struct mv88e6xxx_chip {
|
||||
@ -292,11 +293,16 @@ struct mv88e6xxx_chip {
|
||||
struct mv88e6xxx_irq g1_irq;
|
||||
struct mv88e6xxx_irq g2_irq;
|
||||
int irq;
|
||||
char irq_name[32];
|
||||
int device_irq;
|
||||
char device_irq_name[32];
|
||||
int watchdog_irq;
|
||||
char watchdog_irq_name[32];
|
||||
|
||||
int atu_prob_irq;
|
||||
char atu_prob_irq_name[32];
|
||||
int vtu_prob_irq;
|
||||
char vtu_prob_irq_name[32];
|
||||
struct kthread_worker *kworker;
|
||||
struct kthread_delayed_work irq_poll_work;
|
||||
|
||||
|
@ -425,9 +425,12 @@ int mv88e6xxx_g1_atu_prob_irq_setup(struct mv88e6xxx_chip *chip)
|
||||
if (chip->atu_prob_irq < 0)
|
||||
return chip->atu_prob_irq;
|
||||
|
||||
snprintf(chip->atu_prob_irq_name, sizeof(chip->atu_prob_irq_name),
|
||||
"mv88e6xxx-%s-g1-atu-prob", dev_name(chip->dev));
|
||||
|
||||
err = request_threaded_irq(chip->atu_prob_irq, NULL,
|
||||
mv88e6xxx_g1_atu_prob_irq_thread_fn,
|
||||
IRQF_ONESHOT, "mv88e6xxx-g1-atu-prob",
|
||||
IRQF_ONESHOT, chip->atu_prob_irq_name,
|
||||
chip);
|
||||
if (err)
|
||||
irq_dispose_mapping(chip->atu_prob_irq);
|
||||
|
@ -631,9 +631,12 @@ int mv88e6xxx_g1_vtu_prob_irq_setup(struct mv88e6xxx_chip *chip)
|
||||
if (chip->vtu_prob_irq < 0)
|
||||
return chip->vtu_prob_irq;
|
||||
|
||||
snprintf(chip->vtu_prob_irq_name, sizeof(chip->vtu_prob_irq_name),
|
||||
"mv88e6xxx-%s-g1-vtu-prob", dev_name(chip->dev));
|
||||
|
||||
err = request_threaded_irq(chip->vtu_prob_irq, NULL,
|
||||
mv88e6xxx_g1_vtu_prob_irq_thread_fn,
|
||||
IRQF_ONESHOT, "mv88e6xxx-g1-vtu-prob",
|
||||
IRQF_ONESHOT, chip->vtu_prob_irq_name,
|
||||
chip);
|
||||
if (err)
|
||||
irq_dispose_mapping(chip->vtu_prob_irq);
|
||||
|
@ -948,10 +948,13 @@ static int mv88e6xxx_g2_watchdog_setup(struct mv88e6xxx_chip *chip)
|
||||
if (chip->watchdog_irq < 0)
|
||||
return chip->watchdog_irq;
|
||||
|
||||
snprintf(chip->watchdog_irq_name, sizeof(chip->watchdog_irq_name),
|
||||
"mv88e6xxx-%s-watchdog", dev_name(chip->dev));
|
||||
|
||||
err = request_threaded_irq(chip->watchdog_irq, NULL,
|
||||
mv88e6xxx_g2_watchdog_thread_fn,
|
||||
IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
|
||||
"mv88e6xxx-watchdog", chip);
|
||||
chip->watchdog_irq_name, chip);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@ -1114,9 +1117,12 @@ int mv88e6xxx_g2_irq_setup(struct mv88e6xxx_chip *chip)
|
||||
goto out;
|
||||
}
|
||||
|
||||
snprintf(chip->device_irq_name, sizeof(chip->device_irq_name),
|
||||
"mv88e6xxx-%s-g2", dev_name(chip->dev));
|
||||
|
||||
err = request_threaded_irq(chip->device_irq, NULL,
|
||||
mv88e6xxx_g2_irq_thread_fn,
|
||||
IRQF_ONESHOT, "mv88e6xxx-g2", chip);
|
||||
IRQF_ONESHOT, chip->device_irq_name, chip);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user