2012.11.13. 18:21 keltezéssel, Daniel Golle írta:
> On 13/11/12 19:12, Сергей Василюгин wrote:
>> The same problem with this version on my dir-620 d1. Searching what is
>> broken..
> Looks like rt2x00lib_probe_hw_modes isn't actually called on the SoCs...
> *sigh*
Erm, this is not true.
rt2x00lib_probe_dev is called for all devices...
> /*
> * driver allocation handlers.
> */
> int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
> {
> int retval = -ENOMEM;
>
<...>
> retval = rt2x00lib_load_eeprom_file(rt2x00dev);
> if (retval)
> goto exit;
... the EEPROM file for SoCs/onboard PCI devices is loaded from here ...
>
> /*
> * Initialize work.
> */
> rt2x00dev->workqueue =
> alloc_ordered_workqueue(wiphy_name(rt2x00dev->hw->wiphy), 0);
> if (!rt2x00dev->workqueue) {
> retval = -ENOMEM;
> goto exit;
> }
>
> INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled);
> INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup);
> INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep);
>
> /*
> * Let the driver probe the device to detect the capabilities.
> */
> retval = rt2x00dev->ops->lib->probe_hw(rt2x00dev);
> if (retval) {
> ERROR(rt2x00dev, "Failed to allocate device.\n");
> goto exit;
> }
>
> /*
> * Allocate queue array.
> */
> retval = rt2x00queue_allocate(rt2x00dev);
> if (retval)
> goto exit;
>
> /*
> * Initialize ieee80211 structure.
> */
> retval = rt2x00lib_probe_hw(rt2x00dev);
... later it calls rt2x00lib_probe_hw() ....
> if (retval) {
> ERROR(rt2x00dev, "Failed to initialize hw.\n");
> goto exit;
> }
>
<...>
> static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
> {
> struct hw_mode_spec *spec = &rt2x00dev->spec;
> int status;
>
> if (test_bit(DEVICE_STATE_REGISTERED_HW, &rt2x00dev->flags))
> return 0;
>
> /*
> * Initialize HW modes.
> */
> status = rt2x00lib_probe_hw_modes(rt2x00dev, spec);
and rt2x00lib_probe_hw_modes is called from here.
> if (status)
> return status;
>
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel