Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0d8d565 authored by Erik Stromdahl's avatar Erik Stromdahl Committed by Kalle Valo
Browse files

ath10k: add struct ath10k_bus_params



This struct is used as argument to ath10k_core_register in order to
make it easier to add more bus parameters in the future.

Signed-off-by: default avatarErik Stromdahl <erik.stromdahl@gmail.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 39501ea6
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -750,7 +750,7 @@ static int ath10k_ahb_probe(struct platform_device *pdev)
	enum ath10k_hw_rev hw_rev;
	size_t size;
	int ret;
	u32 chip_id;
	struct ath10k_bus_params bus_params;

	of_id = of_match_device(ath10k_ahb_of_match, &pdev->dev);
	if (!of_id) {
@@ -806,14 +806,14 @@ static int ath10k_ahb_probe(struct platform_device *pdev)

	ath10k_pci_ce_deinit(ar);

	chip_id = ath10k_ahb_soc_read32(ar, SOC_CHIP_ID_ADDRESS);
	if (chip_id == 0xffffffff) {
	bus_params.chip_id = ath10k_ahb_soc_read32(ar, SOC_CHIP_ID_ADDRESS);
	if (bus_params.chip_id == 0xffffffff) {
		ath10k_err(ar, "failed to get chip id\n");
		ret = -ENODEV;
		goto err_halt_device;
	}

	ret = ath10k_core_register(ar, chip_id);
	ret = ath10k_core_register(ar, &bus_params);
	if (ret) {
		ath10k_err(ar, "failed to register driver core: %d\n", ret);
		goto err_halt_device;
+3 −2
Original line number Diff line number Diff line
@@ -2924,9 +2924,10 @@ static void ath10k_core_register_work(struct work_struct *work)
	return;
}

int ath10k_core_register(struct ath10k *ar, u32 chip_id)
int ath10k_core_register(struct ath10k *ar,
			 const struct ath10k_bus_params *bus_params)
{
	ar->chip_id = chip_id;
	ar->chip_id = bus_params->chip_id;
	queue_work(ar->workqueue, &ar->register_work);

	return 0;
+6 −1
Original line number Diff line number Diff line
@@ -915,6 +915,10 @@ struct ath10k_per_peer_tx_stats {
	u32	reserved2;
};

struct ath10k_bus_params {
	u32 chip_id;
};

struct ath10k {
	struct ath_common ath_common;
	struct ieee80211_hw *hw;
@@ -1204,7 +1208,8 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode,
		      const struct ath10k_fw_components *fw_components);
int ath10k_wait_for_suspend(struct ath10k *ar, u32 suspend_opt);
void ath10k_core_stop(struct ath10k *ar);
int ath10k_core_register(struct ath10k *ar, u32 chip_id);
int ath10k_core_register(struct ath10k *ar,
			 const struct ath10k_bus_params *bus_params);
void ath10k_core_unregister(struct ath10k *ar);

#endif /* _CORE_H_ */
+6 −6
Original line number Diff line number Diff line
@@ -3501,7 +3501,7 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
	struct ath10k *ar;
	struct ath10k_pci *ar_pci;
	enum ath10k_hw_rev hw_rev;
	u32 chip_id;
	struct ath10k_bus_params bus_params;
	bool pci_ps;
	int (*pci_soft_reset)(struct ath10k *ar);
	int (*pci_hard_reset)(struct ath10k *ar);
@@ -3637,19 +3637,19 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
		goto err_free_irq;
	}

	chip_id = ath10k_pci_soc_read32(ar, SOC_CHIP_ID_ADDRESS);
	if (chip_id == 0xffffffff) {
	bus_params.chip_id = ath10k_pci_soc_read32(ar, SOC_CHIP_ID_ADDRESS);
	if (bus_params.chip_id == 0xffffffff) {
		ath10k_err(ar, "failed to get chip id\n");
		goto err_free_irq;
	}

	if (!ath10k_pci_chip_is_supported(pdev->device, chip_id)) {
	if (!ath10k_pci_chip_is_supported(pdev->device, bus_params.chip_id)) {
		ath10k_err(ar, "device %04x with chip_id %08x isn't supported\n",
			   pdev->device, chip_id);
			   pdev->device, bus_params.chip_id);
		goto err_free_irq;
	}

	ret = ath10k_core_register(ar, chip_id);
	ret = ath10k_core_register(ar, &bus_params);
	if (ret) {
		ath10k_err(ar, "failed to register driver core: %d\n", ret);
		goto err_free_irq;
+4 −3
Original line number Diff line number Diff line
@@ -1941,7 +1941,8 @@ static int ath10k_sdio_probe(struct sdio_func *func,
	struct ath10k_sdio *ar_sdio;
	struct ath10k *ar;
	enum ath10k_hw_rev hw_rev;
	u32 chip_id, dev_id_base;
	u32 dev_id_base;
	struct ath10k_bus_params bus_params;
	int ret, i;

	/* Assumption: All SDIO based chipsets (so far) are QCA6174 based.
@@ -2036,8 +2037,8 @@ static int ath10k_sdio_probe(struct sdio_func *func,
	}

	/* TODO: don't know yet how to get chip_id with SDIO */
	chip_id = 0;
	ret = ath10k_core_register(ar, chip_id);
	bus_params.chip_id = 0;
	ret = ath10k_core_register(ar, &bus_params);
	if (ret) {
		ath10k_err(ar, "failed to register driver core: %d\n", ret);
		goto err_free_wq;
Loading