Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions drivers/gpio/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1724,6 +1724,7 @@ config GPIO_PCIE_IDIO_24

config GPIO_PHYTIUM_PCI
tristate "Phytium GPIO PCI support"
depends on PCI && ARCH_PHYTIUM
select GPIO_PHYTIUM_CORE
select IRQ_DOMAIN
select GENERIC_IRQ_CHIP
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpio/gpio-phytium-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#define GPIO_PORT_STRIDE (GPIO_EXT_PORTB - GPIO_EXT_PORTA)
#define GPIO_CLEAR_IRQ 0xffffffff

#define PHYTIUM_GPIO_DRIVER_VERSION "1.1.2"
#define PHYTIUM_GPIO_DRIVER_VERSION "1.1.3"

struct pin_loc {
unsigned int port;
Expand Down
16 changes: 16 additions & 0 deletions drivers/gpio/gpio-phytium-platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,20 @@ static int phytium_gpio_probe(struct platform_device *pdev)
return 0;
}

/* Rebind parent-to-child dispatch chain and enable parent IRQ lines. */
static void phytium_set_irq_chained_handler(struct phytium_gpio *gpio)
{
struct gpio_irq_chip *girq = &gpio->gc.irq;
int i;

for (i = 0; i < girq->num_parents; i++) {
if (gpio->irq[i] >= 0) {
irq_set_chained_handler_and_data(gpio->irq[i],
phytium_gpio_irq_handler, &gpio->gc);
}
}
}

#ifdef CONFIG_PM_SLEEP
static int phytium_gpio_suspend(struct device *dev)
{
Expand Down Expand Up @@ -193,6 +207,8 @@ static int phytium_gpio_resume(struct device *dev)

raw_spin_unlock_irqrestore(&gpio->lock, flags);

phytium_set_irq_chained_handler(gpio);

return 0;
}
#endif
Expand Down
16 changes: 16 additions & 0 deletions drivers/pci/switch/switchtec.c
Original file line number Diff line number Diff line change
Expand Up @@ -1852,6 +1852,22 @@ static const struct pci_device_id switchtec_pci_tbl[] = {
SWITCHTEC_PCI_DEVICE(0x5552, SWITCHTEC_GEN5), /* PAXA 52XG5 */
SWITCHTEC_PCI_DEVICE(0x5536, SWITCHTEC_GEN5), /* PAXA 36XG5 */
SWITCHTEC_PCI_DEVICE(0x5528, SWITCHTEC_GEN5), /* PAXA 28XG5 */
SWITCHTEC_PCI_DEVICE(0x6048, SWITCHTEC_GEN6), /* PFXs 48XG6 */
SWITCHTEC_PCI_DEVICE(0x6064, SWITCHTEC_GEN6), /* PFXs 64XG6 */
SWITCHTEC_PCI_DEVICE(0x6044, SWITCHTEC_GEN6), /* PFXs 144XG6 */
SWITCHTEC_PCI_DEVICE(0x6060, SWITCHTEC_GEN6), /* PFXs 160XG6 */
SWITCHTEC_PCI_DEVICE(0x6148, SWITCHTEC_GEN6), /* PSXs 48XG6 */
SWITCHTEC_PCI_DEVICE(0x6164, SWITCHTEC_GEN6), /* PSXs 64XG6 */
SWITCHTEC_PCI_DEVICE(0x6144, SWITCHTEC_GEN6), /* PSXs 144XG6 */
SWITCHTEC_PCI_DEVICE(0x6160, SWITCHTEC_GEN6), /* PSXs 160XG6 */
SWITCHTEC_PCI_DEVICE(0x6248, SWITCHTEC_GEN6), /* PFX 48XG6 */
SWITCHTEC_PCI_DEVICE(0x6264, SWITCHTEC_GEN6), /* PFX 64XG6 */
SWITCHTEC_PCI_DEVICE(0x6244, SWITCHTEC_GEN6), /* PFX 144XG6 */
SWITCHTEC_PCI_DEVICE(0x6260, SWITCHTEC_GEN6), /* PFX 160XG6 */
SWITCHTEC_PCI_DEVICE(0x6348, SWITCHTEC_GEN6), /* PSX 48XG6 */
SWITCHTEC_PCI_DEVICE(0x6364, SWITCHTEC_GEN6), /* PSX 64XG6 */
SWITCHTEC_PCI_DEVICE(0x6344, SWITCHTEC_GEN6), /* PSX 144XG6 */
SWITCHTEC_PCI_DEVICE(0x6360, SWITCHTEC_GEN6), /* PSX 160XG6 */
SWITCHTEC_PCI100X_DEVICE(0x1001, SWITCHTEC_GEN4), /* PCI1001 16XG4 */
SWITCHTEC_PCI100X_DEVICE(0x1002, SWITCHTEC_GEN4), /* PCI1002 12XG4 */
SWITCHTEC_PCI100X_DEVICE(0x1003, SWITCHTEC_GEN4), /* PCI1003 16XG4 */
Expand Down
1 change: 1 addition & 0 deletions include/linux/switchtec.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ enum switchtec_gen {
SWITCHTEC_GEN3,
SWITCHTEC_GEN4,
SWITCHTEC_GEN5,
SWITCHTEC_GEN6,
};

struct mrpc_regs {
Expand Down