Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 309045
b: refs/heads/master
c: a68ad4d
h: refs/heads/master
i:
  309043: 2757c46
v: v3
  • Loading branch information
Gabor Juhos authored and Ralf Baechle committed May 15, 2012
1 parent 17280b8 commit 62e6798
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 881b6ef0cca3395ac0171472a1ce768fede7535b
refs/heads/master: a68ad4d892c6254310d2bfc3d6b0c0d989377636
13 changes: 12 additions & 1 deletion trunk/arch/mips/ath79/mach-ubnt-xm.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,16 +85,27 @@ static struct ath9k_platform_data ubnt_xm_eeprom_data;
static struct ar724x_pci_data ubnt_xm_pci_data[] = {
{
.irq = ATH79_PCI_IRQ(0),
.pdata = &ubnt_xm_eeprom_data,
},
};

static int ubnt_xm_pci_plat_dev_init(struct pci_dev *dev)
{
switch (PCI_SLOT(dev->devfn)) {
case 0:
dev->dev.platform_data = &ubnt_xm_eeprom_data;
break;
}

return 0;
}

static void __init ubnt_xm_pci_init(void)
{
memcpy(ubnt_xm_eeprom_data.eeprom_data, UBNT_XM_EEPROM_ADDR,
sizeof(ubnt_xm_eeprom_data.eeprom_data));

ar724x_pci_add_data(ubnt_xm_pci_data, ARRAY_SIZE(ubnt_xm_pci_data));
ath79_pci_set_plat_dev_init(ubnt_xm_pci_plat_dev_init);
ath79_register_pci();
}
#else
Expand Down
14 changes: 8 additions & 6 deletions trunk/arch/mips/ath79/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <asm/mach-ath79/pci.h>
#include "pci.h"

static int (*ath79_pci_plat_dev_init)(struct pci_dev *dev);
static struct ar724x_pci_data *pci_data;
static int pci_data_size;

Expand All @@ -38,14 +39,15 @@ int __init pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin)

int pcibios_plat_dev_init(struct pci_dev *dev)
{
unsigned int devfn = dev->devfn;

if (devfn > pci_data_size - 1)
return PCIBIOS_DEVICE_NOT_FOUND;
if (ath79_pci_plat_dev_init)
return ath79_pci_plat_dev_init(dev);

dev->dev.platform_data = pci_data[devfn].pdata;
return 0;
}

return PCIBIOS_SUCCESSFUL;
void __init ath79_pci_set_plat_dev_init(int (*func)(struct pci_dev *dev))
{
ath79_pci_plat_dev_init = func;
}

int __init ath79_register_pci(void)
Expand Down
4 changes: 3 additions & 1 deletion trunk/arch/mips/ath79/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,16 @@

struct ar724x_pci_data {
int irq;
void *pdata;
};

void ar724x_pci_add_data(struct ar724x_pci_data *data, int size);

#ifdef CONFIG_PCI
void ath79_pci_set_plat_dev_init(int (*func)(struct pci_dev *dev));
int ath79_register_pci(void);
#else
static inline void
ath79_pci_set_plat_dev_init(int (*func)(struct pci_dev *)) {}
static inline int ath79_register_pci(void) { return 0; }
#endif

Expand Down

0 comments on commit 62e6798

Please sign in to comment.