mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-03 20:44:18 +00:00
apm821xx: WNDR4700: enumerate PCIe in device-tree
This patch adds the pcie-switch and bridge configuration of the WNDR4700. This allows to get rid of the legacy firmware monikers and drop the usbport LED declaration. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
parent
d75e753063
commit
2c3f16d70e
@ -42,9 +42,6 @@ netgear,wndap660)
|
|||||||
netgear,wndr4700)
|
netgear,wndr4700)
|
||||||
ucidef_set_led_switch "wan_green" "WAN (green)" "wndr4700:green:wan" "switch0" "0x20"
|
ucidef_set_led_switch "wan_green" "WAN (green)" "wndr4700:green:wan" "switch0" "0x20"
|
||||||
ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "wndr4700:yellow:wan" "eth0.2" "tx rx"
|
ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "wndr4700:yellow:wan" "eth0.2" "tx rx"
|
||||||
ucidef_set_led_usbport "usb3" "USB3" "wndr4700:blue:usb" "usb2-port1" "usb2-port2" "usb3-port1" "usb3-port2"
|
|
||||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "wndr4700:blue:wlan" "phy0tpt"
|
|
||||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "wndr4700:blue:wlan" "phy1tpt"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
@ -7,25 +7,7 @@
|
|||||||
board=$(board_name)
|
board=$(board_name)
|
||||||
|
|
||||||
case "$FIRMWARE" in
|
case "$FIRMWARE" in
|
||||||
"pci_wmac0.eeprom")
|
"ath9k-eeprom-pci-0000:43:00.0.bin")
|
||||||
case $board in
|
|
||||||
netgear,wndr4700)
|
|
||||||
. /lib/upgrade/nand.sh
|
|
||||||
|
|
||||||
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
|
|
||||||
caldata_extract_ubi "caldata" 0x5000 0x1000
|
|
||||||
else
|
|
||||||
caldata_extract "wifi_data" 0x5000 0x1000
|
|
||||||
ath9k_patch_mac $(mtd_get_mac_binary wifi_data 0xc)
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
caldata_die "board $board is not supported yet"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
|
|
||||||
"pci_wmac1.eeprom")
|
|
||||||
case $board in
|
case $board in
|
||||||
netgear,wndr4700)
|
netgear,wndr4700)
|
||||||
. /lib/upgrade/nand.sh
|
. /lib/upgrade/nand.sh
|
||||||
@ -42,4 +24,22 @@ case "$FIRMWARE" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
"ath9k-eeprom-pci-0000:44:00.0.bin")
|
||||||
|
case $board in
|
||||||
|
netgear,wndr4700)
|
||||||
|
. /lib/upgrade/nand.sh
|
||||||
|
|
||||||
|
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
|
||||||
|
caldata_extract_ubi "caldata" 0x5000 0x1000
|
||||||
|
else
|
||||||
|
caldata_extract "wifi_data" 0x5000 0x1000
|
||||||
|
ath9k_patch_mac $(mtd_get_mac_binary wifi_data 0xc)
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
caldata_die "board $board is not supported yet"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -381,6 +381,9 @@
|
|||||||
usb-blue {
|
usb-blue {
|
||||||
label = "wndr4700:blue:usb";
|
label = "wndr4700:blue:usb";
|
||||||
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
|
gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
trigger-sources = <&usb2_port 1>, <&usb2_port 2>,
|
||||||
|
<&usb3_port 1>, <&usb3_port 2>;
|
||||||
|
linux,default-trigger = "usbport";
|
||||||
};
|
};
|
||||||
|
|
||||||
logo-white {
|
logo-white {
|
||||||
@ -412,12 +415,103 @@
|
|||||||
wlan-blue {
|
wlan-blue {
|
||||||
label = "wndr4700:blue:wlan";
|
label = "wndr4700:blue:wlan";
|
||||||
gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
|
gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>;
|
||||||
|
linux,default-trigger = "phy0tpt";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&PCIE0 {
|
&PCIE0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* relevant lspci topology:
|
||||||
|
*
|
||||||
|
* -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
|
||||||
|
* +-03.0-[44]----00.0
|
||||||
|
* \-04.0-[45]----00.0
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
bridge@64,0 {
|
||||||
|
reg = <0x00400000 0 0 0 0>;
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
bridge@65,0 {
|
||||||
|
/* IDT PES4T4 PCI Express Switch */
|
||||||
|
compatible = "pci111d,803a";
|
||||||
|
reg = <0x00410000 0 0 0 0>;
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
bridge@66,2 {
|
||||||
|
compatible = "pci111d,803a";
|
||||||
|
reg = <0x00421000 0 0 0 0>;
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
wifi0: wifi@67,0 {
|
||||||
|
/* Atheros AR9380 5GHz */
|
||||||
|
compatible = "pci168c,0030";
|
||||||
|
reg = <0x00430000 0 0 0 0>;
|
||||||
|
qca,no-eeprom;
|
||||||
|
/* wifi CAL & MAC is stored in nvram */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Because this was such a pain.
|
||||||
|
* Here's the full device path:
|
||||||
|
* pci0000:40/0000:40:00.0/0000:41:00.0/0000:42:02.0/0000:43:00.0
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
bridge@66,3 {
|
||||||
|
compatible = "pci111d,803a";
|
||||||
|
reg = <0x00421800 0 0 0 0>;
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
wifi1: wifi@68,0 {
|
||||||
|
/* Atheros AR9381 2.4GHz */
|
||||||
|
compatible = "pci168c,0033";
|
||||||
|
reg = <0x00440000 0 0 0 0>;
|
||||||
|
qca,no-eeprom;
|
||||||
|
/* wifi CAL & MAC is stored in nvram */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
bridge@66,4 {
|
||||||
|
compatible = "pci111d,803a";
|
||||||
|
reg = <0x00422000 0 0 0 0>;
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
usb1: usb@69,0 {
|
||||||
|
/* Renesas uPD720202 */
|
||||||
|
compatible = "pci1912,0015";
|
||||||
|
reg = <0x00450000 0 0 0 0>;
|
||||||
|
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
usb2_port: port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
#trigger-source-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
usb3_port: port@2 {
|
||||||
|
reg = <2>;
|
||||||
|
#trigger-source-cells = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&MSI {
|
&MSI {
|
||||||
|
@ -73,27 +73,8 @@ define_machine(wndr4700) {
|
|||||||
.calibrate_decr = generic_calibrate_decr,
|
.calibrate_decr = generic_calibrate_decr,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ath9k_platform_data ar9380_wmac0_data = {
|
|
||||||
.led_pin = -1,
|
|
||||||
.eeprom_name = "pci_wmac1.eeprom",
|
|
||||||
};
|
|
||||||
static struct ath9k_platform_data ar9580_wmac1_data = {
|
|
||||||
.led_pin = -1,
|
|
||||||
.eeprom_name = "pci_wmac0.eeprom",
|
|
||||||
};
|
|
||||||
|
|
||||||
static int __init wndr4700_ath9k_eeprom_load(void)
|
static int __init wndr4700_ath9k_eeprom_load(void)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
|
||||||
|
|
||||||
dev = pci_get_device(PCI_VENDOR_ID_ATHEROS, 0x0030, NULL);
|
|
||||||
if (dev)
|
|
||||||
dev->dev.platform_data = &ar9380_wmac0_data;
|
|
||||||
|
|
||||||
dev = pci_get_device(PCI_VENDOR_ID_ATHEROS, 0x0033, NULL);
|
|
||||||
if (dev)
|
|
||||||
dev->dev.platform_data = &ar9580_wmac1_data;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
machine_device_initcall(wndr4700, wndr4700_ath9k_eeprom_load);
|
machine_device_initcall(wndr4700, wndr4700_ath9k_eeprom_load);
|
||||||
|
Loading…
Reference in New Issue
Block a user