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

Commit e9c0d0aa authored by Gabor Juhos's avatar Gabor Juhos Committed by John Crispin
Browse files

MIPS: ath79: add WMAC registration code for the QCA955X SoCs



The SoC has a built-in wireless MAC. Register a platform
device for that to make it usable with the ath9k driver.

Cc: Rodriguez, Luis <rodrigue@qca.qualcomm.com>
Cc: Giori, Kathy <kgiori@qca.qualcomm.com>
Cc: QCA Linux Team <qca-linux-team@qca.qualcomm.com>
Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/4956/


Signed-off-by: default avatarJohn Crispin <blogic@openwrt.org>
parent 13992303
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -108,7 +108,7 @@ config ATH79_DEV_USB
	def_bool n
	def_bool n


config ATH79_DEV_WMAC
config ATH79_DEV_WMAC
	depends on (SOC_AR913X || SOC_AR933X || SOC_AR934X)
	depends on (SOC_AR913X || SOC_AR933X || SOC_AR934X || SOC_QCA955X)
	def_bool n
	def_bool n


endif
endif
+20 −0
Original line number Original line Diff line number Diff line
@@ -116,6 +116,24 @@ static void ar934x_wmac_setup(void)
		ath79_wmac_data.is_clk_25mhz = true;
		ath79_wmac_data.is_clk_25mhz = true;
}
}


static void qca955x_wmac_setup(void)
{
	u32 t;

	ath79_wmac_device.name = "qca955x_wmac";

	ath79_wmac_resources[0].start = QCA955X_WMAC_BASE;
	ath79_wmac_resources[0].end = QCA955X_WMAC_BASE + QCA955X_WMAC_SIZE - 1;
	ath79_wmac_resources[1].start = ATH79_IP2_IRQ(1);
	ath79_wmac_resources[1].end = ATH79_IP2_IRQ(1);

	t = ath79_reset_rr(QCA955X_RESET_REG_BOOTSTRAP);
	if (t & QCA955X_BOOTSTRAP_REF_CLK_40)
		ath79_wmac_data.is_clk_25mhz = false;
	else
		ath79_wmac_data.is_clk_25mhz = true;
}

void __init ath79_register_wmac(u8 *cal_data)
void __init ath79_register_wmac(u8 *cal_data)
{
{
	if (soc_is_ar913x())
	if (soc_is_ar913x())
@@ -124,6 +142,8 @@ void __init ath79_register_wmac(u8 *cal_data)
		ar933x_wmac_setup();
		ar933x_wmac_setup();
	else if (soc_is_ar934x())
	else if (soc_is_ar934x())
		ar934x_wmac_setup();
		ar934x_wmac_setup();
	else if (soc_is_qca955x())
		qca955x_wmac_setup();
	else
	else
		BUG();
		BUG();


+3 −0
Original line number Original line Diff line number Diff line
@@ -94,6 +94,9 @@
#define AR934X_SRIF_BASE	(AR71XX_APB_BASE + 0x00116000)
#define AR934X_SRIF_BASE	(AR71XX_APB_BASE + 0x00116000)
#define AR934X_SRIF_SIZE	0x1000
#define AR934X_SRIF_SIZE	0x1000


#define QCA955X_WMAC_BASE	(AR71XX_APB_BASE + 0x00100000)
#define QCA955X_WMAC_SIZE	0x20000

/*
/*
 * DDR_CTRL block
 * DDR_CTRL block
 */
 */