提交 f6d0e9be 编写于 作者: E Emmanuel Grumbach 提交者: Wey-Yi Guy

iwlwifi: kill bus_is_pm_supported

Get this information from the transport layer which is now in charge
of the APM too.
Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
上级 af634bee
...@@ -120,12 +120,10 @@ struct iwl_bus; ...@@ -120,12 +120,10 @@ struct iwl_bus;
/** /**
* struct iwl_bus_ops - bus specific operations * struct iwl_bus_ops - bus specific operations
* @get_pm_support: must returns true if the bus can go to sleep
* @get_hw_id_string: prints the hw_id in the provided buffer * @get_hw_id_string: prints the hw_id in the provided buffer
* @get_hw_id: get hw_id in u32 * @get_hw_id: get hw_id in u32
*/ */
struct iwl_bus_ops { struct iwl_bus_ops {
bool (*get_pm_support)(struct iwl_bus *bus);
void (*get_hw_id_string)(struct iwl_bus *bus, char buf[], int buf_len); void (*get_hw_id_string)(struct iwl_bus *bus, char buf[], int buf_len);
u32 (*get_hw_id)(struct iwl_bus *bus); u32 (*get_hw_id)(struct iwl_bus *bus);
}; };
...@@ -149,11 +147,6 @@ struct iwl_bus { ...@@ -149,11 +147,6 @@ struct iwl_bus {
char bus_specific[0] __attribute__((__aligned__(sizeof(void *)))); char bus_specific[0] __attribute__((__aligned__(sizeof(void *))));
}; };
static inline bool bus_get_pm_support(struct iwl_bus *bus)
{
return bus->ops->get_pm_support(bus);
}
static inline void bus_get_hw_id_string(struct iwl_bus *bus, char buf[], static inline void bus_get_hw_id_string(struct iwl_bus *bus, char buf[],
int buf_len) int buf_len)
{ {
......
...@@ -87,25 +87,6 @@ struct iwl_pci_bus { ...@@ -87,25 +87,6 @@ struct iwl_pci_bus {
#define IWL_BUS_GET_PCI_DEV(_iwl_bus) \ #define IWL_BUS_GET_PCI_DEV(_iwl_bus) \
((IWL_BUS_GET_PCI_BUS(_iwl_bus))->pci_dev) ((IWL_BUS_GET_PCI_BUS(_iwl_bus))->pci_dev)
static u16 iwl_pciexp_link_ctrl(struct iwl_bus *bus)
{
int pos;
u16 pci_lnk_ctl;
struct pci_dev *pci_dev = IWL_BUS_GET_PCI_DEV(bus);
pos = pci_pcie_cap(pci_dev);
pci_read_config_word(pci_dev, pos + PCI_EXP_LNKCTL, &pci_lnk_ctl);
return pci_lnk_ctl;
}
static bool iwl_pci_is_pm_supported(struct iwl_bus *bus)
{
u16 lctl = iwl_pciexp_link_ctrl(bus);
return !(lctl & PCI_CFG_LINK_CTRL_VAL_L0S_EN);
}
static void iwl_pci_get_hw_id_string(struct iwl_bus *bus, char buf[], static void iwl_pci_get_hw_id_string(struct iwl_bus *bus, char buf[],
int buf_len) int buf_len)
{ {
...@@ -123,7 +104,6 @@ static u32 iwl_pci_get_hw_id(struct iwl_bus *bus) ...@@ -123,7 +104,6 @@ static u32 iwl_pci_get_hw_id(struct iwl_bus *bus)
} }
static const struct iwl_bus_ops bus_ops_pci = { static const struct iwl_bus_ops bus_ops_pci = {
.get_pm_support = iwl_pci_is_pm_supported,
.get_hw_id_string = iwl_pci_get_hw_id_string, .get_hw_id_string = iwl_pci_get_hw_id_string,
.get_hw_id = iwl_pci_get_hw_id, .get_hw_id = iwl_pci_get_hw_id,
}; };
......
...@@ -436,7 +436,7 @@ int iwl_power_update_mode(struct iwl_priv *priv, bool force) ...@@ -436,7 +436,7 @@ int iwl_power_update_mode(struct iwl_priv *priv, bool force)
/* initialize to default */ /* initialize to default */
void iwl_power_initialize(struct iwl_priv *priv) void iwl_power_initialize(struct iwl_priv *priv)
{ {
priv->power_data.bus_pm = bus_get_pm_support(bus(priv)); priv->power_data.bus_pm = trans(priv)->pm_support;
priv->power_data.debug_sleep_level_override = -1; priv->power_data.debug_sleep_level_override = -1;
......
...@@ -676,6 +676,7 @@ static void iwl_apm_config(struct iwl_trans *trans) ...@@ -676,6 +676,7 @@ static void iwl_apm_config(struct iwl_trans *trans)
dev_printk(KERN_INFO, trans->dev, dev_printk(KERN_INFO, trans->dev,
"L1 Disabled; Enabling L0S\n"); "L1 Disabled; Enabling L0S\n");
} }
trans->pm_support = !(lctl & PCI_CFG_LINK_CTRL_VAL_L0S_EN);
} }
/* /*
......
...@@ -239,6 +239,7 @@ struct iwl_calib_result { ...@@ -239,6 +239,7 @@ struct iwl_calib_result {
* @ucode_init: init ucode image * @ucode_init: init ucode image
* @ucode_wowlan: wake on wireless ucode image (optional) * @ucode_wowlan: wake on wireless ucode image (optional)
* @nvm_device_type: indicates OTP or eeprom * @nvm_device_type: indicates OTP or eeprom
* @pm_support: set to true in start_hw if link pm is supported
* @calib_results: list head for init calibration results * @calib_results: list head for init calibration results
*/ */
struct iwl_trans { struct iwl_trans {
...@@ -257,6 +258,7 @@ struct iwl_trans { ...@@ -257,6 +258,7 @@ struct iwl_trans {
/* eeprom related variables */ /* eeprom related variables */
int nvm_device_type; int nvm_device_type;
bool pm_support;
/* init calibration results */ /* init calibration results */
struct list_head calib_results; struct list_head calib_results;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册