[OpenWrt-Devel] [PATCH] lantiq: make loading pci fixup data from cal_data work again
John Crispin
john at phrozen.org
Wed Jun 18 08:43:31 EDT 2014
On 17/06/2014 19:06, Ben Mulvihill wrote:
> Changeset 40948 restored an older (and uglier!) version of the code
> for reading the athxk calibration partition on lantiq xway boards.
> As a result pci fixups stored in this partition are no longer
> applied, breaking wireless on the BTHOMEHUBV2B and (I imagine) on
> the DGN3500. This is a minimal patch to restore this functionality
> for ath9k without reverting any of the other changes in changeset
> 40948.
>
> Note for John Crispin: I guess you won't want to apply this patch
> if you are planning to check changeset 40948 anyway yourself. I
> produced it for my own use and thought I might as well send it in
> in case it was any use to anyone.
>
> Ben Mulvihill
thanks for looking into this. looks like you picked up the missing
pieces. i am building a test image just now with this patch applied on
top of trunk. i managed to find a dgn3500 last night and will pick it
up in an hour. if this work, i will simply merge your patch and hope
that all boards are now working. once BB is out the door i will rework
this code and make it aligned with the eep loading code used on
ralink/mtk.
John
>
>
> --- a/arch/mips/lantiq/xway/ath_eep.c 2014-06-16 12:10:10.413893209
> +0200 +++ b/arch/mips/lantiq/xway/ath_eep.c 2014-06-16
> 12:10:26.366264625 +0200 @@ -35,6 +35,7 @@ static int
> ath9k_pci_plat_dev_init(struc return 0; }
>
> +static int ath9k_eep_load; int __init of_ath9k_eeprom_probe(struct
> platform_device *pdev) { struct device_node *np =
> pdev->dev.of_node, *mtd_np; @@ -117,6 +118,13 @@ int __init
> of_ath9k_eeprom_probe(struct ltq_pci_ath_fixup(pci_slot,
> ath9k_pdata.eeprom_data);
>
> dev_info(&pdev->dev, "pci slot: %u\n", pci_slot); +
> if (ath9k_eep_load) { + struct pci_dev *d =
> NULL; + while ((d =
> pci_get_device(PCI_VENDOR_ID_ATHEROS, +
> PCI_ANY_ID, d)) != NULL) +
> pci_fixup_device(pci_fixup_early, d); + } + }
>
> dev_info(&pdev->dev, "loaded ath9k eeprom\n"); @@ -139,9 +147,22 @@
> static struct platform_driver ath9k_eepr
>
> static int __init of_ath9k_eeprom_init(void) { - return
> platform_driver_probe(&ath9k_eeprom_driver,
> of_ath9k_eeprom_probe); + int ret =
> platform_driver_probe(&ath9k_eeprom_driver,
> of_ath9k_eeprom_probe); + + if (ret) +
> ath9k_eep_load = 1; + + return ret; +} + +static int __init
> of_ath9k_eeprom_init_late(void) +{ + if (!ath9k_eep_load) +
> return 0; + return
> platform_driver_probe(&ath9k_eeprom_driver,
> of_ath9k_eeprom_probe); } -arch_initcall(of_ath9k_eeprom_init);
> +late_initcall(of_ath9k_eeprom_init_late);
> +subsys_initcall(of_ath9k_eeprom_init);
>
>
> static int ath5k_pci_plat_dev_init(struct pci_dev *dev)
> _______________________________________________ openwrt-devel
> mailing list openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list