diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2014-09-29 17:31:43 +0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-09-29 19:56:01 +0400 |
commit | 1bd30b6a42610466bae2c133e68a8feb1004929c (patch) | |
tree | 267590b24c4822865d2e4991835c7349229cd618 /drivers/misc/mei/hw-txe.c | |
parent | 2bf94cabb199f73402a5ddefa4a7bf1a82aaeda5 (diff) | |
download | linux-1bd30b6a42610466bae2c133e68a8feb1004929c.tar.xz |
mei: move fw_status back to hw ops handlers
fw status retrieval has pci specific implementation
so we push it back to the hw layer
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/mei/hw-txe.c')
-rw-r--r-- | drivers/misc/mei/hw-txe.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/misc/mei/hw-txe.c b/drivers/misc/mei/hw-txe.c index acc475eec150..e4cb9dc2d198 100644 --- a/drivers/misc/mei/hw-txe.c +++ b/drivers/misc/mei/hw-txe.c @@ -573,6 +573,35 @@ static int mei_txe_readiness_wait(struct mei_device *dev) return 0; } + +/** + * mei_txe_fw_status - read fw status register from pci config space + * + * @dev: mei device + * @fw_status: fw status register values + */ +static int mei_txe_fw_status(struct mei_device *dev, + struct mei_fw_status *fw_status) +{ + const struct mei_fw_status *fw_src = &dev->cfg->fw_status; + struct pci_dev *pdev = to_pci_dev(dev->dev); + int ret; + int i; + + if (!fw_status) + return -EINVAL; + + fw_status->count = fw_src->count; + for (i = 0; i < fw_src->count && i < MEI_FW_STATUS_MAX; i++) { + ret = pci_read_config_dword(pdev, + fw_src->status[i], &fw_status->status[i]); + if (ret) + return ret; + } + + return 0; +} + /** * mei_txe_hw_config - configure hardware at the start of the devices * @@ -1064,6 +1093,7 @@ static const struct mei_hw_ops mei_txe_hw_ops = { .host_is_ready = mei_txe_host_is_ready, + .fw_status = mei_txe_fw_status, .pg_state = mei_txe_pg_state, .hw_is_ready = mei_txe_hw_is_ready, |