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

Commit 4d6f8b9f authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz Committed by John W. Linville
Browse files

rt2800: prepare for rt2800lib addition



Part of preparations for later code unification.

Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Acked-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Acked-by: default avatarGertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 5822e070
Loading
Loading
Loading
Loading
+58 −45
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ static void rt2800pci_bbp_write(struct rt2x00_dev *rt2x00dev,
		rt2x00_set_field32(&reg, BBP_CSR_CFG_REGNUM, word);
		rt2x00_set_field32(&reg, BBP_CSR_CFG_BUSY, 1);
		rt2x00_set_field32(&reg, BBP_CSR_CFG_READ_CONTROL, 0);
		if (rt2x00_intf_is_pci(rt2x00dev))
			rt2x00_set_field32(&reg, BBP_CSR_CFG_BBP_RW_MODE, 1);

		rt2800_register_write_lock(rt2x00dev, BBP_CSR_CFG, reg);
@@ -125,6 +126,7 @@ static void rt2800pci_bbp_read(struct rt2x00_dev *rt2x00dev,
		rt2x00_set_field32(&reg, BBP_CSR_CFG_REGNUM, word);
		rt2x00_set_field32(&reg, BBP_CSR_CFG_BUSY, 1);
		rt2x00_set_field32(&reg, BBP_CSR_CFG_READ_CONTROL, 1);
		if (rt2x00_intf_is_pci(rt2x00dev))
			rt2x00_set_field32(&reg, BBP_CSR_CFG_BBP_RW_MODE, 1);

		rt2800_register_write_lock(rt2x00dev, BBP_CSR_CFG, reg);
@@ -253,12 +255,14 @@ static void rt2800pci_mcu_request(struct rt2x00_dev *rt2x00dev,
{
	u32 reg;

	if (rt2x00_intf_is_pci(rt2x00dev)) {
		/*
		* RT2880 and RT3052 don't support MCU requests.
		*/
		if (rt2x00_rt(&rt2x00dev->chip, RT2880) ||
		    rt2x00_rt(&rt2x00dev->chip, RT3052))
			return;
	}

	mutex_lock(&rt2x00dev->csr_mutex);

@@ -814,6 +818,7 @@ static void rt2800pci_config_ant(struct rt2x00_dev *rt2x00dev,
	switch ((int)ant->tx) {
	case 1:
		rt2x00_set_field8(&r1, BBP1_TX_ANTENNA, 0);
		if (rt2x00_intf_is_pci(rt2x00dev))
			rt2x00_set_field8(&r3, BBP3_RX_ANTENNA, 0);
		break;
	case 2:
@@ -1480,6 +1485,7 @@ static int rt2800pci_init_registers(struct rt2x00_dev *rt2x00dev)
	u32 reg;
	unsigned int i;

	if (rt2x00_intf_is_pci(rt2x00dev))
		rt2800_register_write(rt2x00dev, PWR_PIN_CFG, 0x00000003);

	rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
@@ -1803,7 +1809,8 @@ static int rt2800pci_init_bbp(struct rt2x00_dev *rt2x00dev)
	if (rt2x00_rev(&rt2x00dev->chip) > RT2860D_VERSION)
		rt2800_bbp_write(rt2x00dev, 84, 0x19);

	if (rt2x00_rt(&rt2x00dev->chip, RT3052)) {
	if (rt2x00_intf_is_pci(rt2x00dev) &&
	    rt2x00_rt(&rt2x00dev->chip, RT3052)) {
		rt2800_bbp_write(rt2x00dev, 31, 0x08);
		rt2800_bbp_write(rt2x00dev, 78, 0x0e);
		rt2800_bbp_write(rt2x00dev, 80, 0x08);
@@ -1887,10 +1894,12 @@ static int rt2800pci_init_rfcsr(struct rt2x00_dev *rt2x00dev)
	u8 rfcsr;
	u8 bbp;

	if (rt2x00_intf_is_pci(rt2x00dev)) {
		if (!rt2x00_rf(&rt2x00dev->chip, RF3020) &&
		    !rt2x00_rf(&rt2x00dev->chip, RF3021) &&
		    !rt2x00_rf(&rt2x00dev->chip, RF3022))
			return 0;
	}

	/*
	 * Init RF calibration.
@@ -1902,6 +1911,7 @@ static int rt2800pci_init_rfcsr(struct rt2x00_dev *rt2x00dev)
	rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 0);
	rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);

	if (rt2x00_intf_is_pci(rt2x00dev)) {
		rt2800_rfcsr_write(rt2x00dev, 0, 0x50);
		rt2800_rfcsr_write(rt2x00dev, 1, 0x01);
		rt2800_rfcsr_write(rt2x00dev, 2, 0xf7);
@@ -1932,6 +1942,7 @@ static int rt2800pci_init_rfcsr(struct rt2x00_dev *rt2x00dev)
		rt2800_rfcsr_write(rt2x00dev, 27, 0x23);
		rt2800_rfcsr_write(rt2x00dev, 28, 0x13);
		rt2800_rfcsr_write(rt2x00dev, 29, 0x83);
	}

	/*
	 * Set RX Filter calibration for 20MHz and 40MHz
@@ -3005,6 +3016,8 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev)
{
	int retval;

	rt2x00_set_chip_intf(rt2x00dev, RT2X00_CHIP_INTF_PCI);

	rt2x00dev->priv = (void *)&rt2800pci_rt2800_ops;

	/*
+75 −59
Original line number Diff line number Diff line
@@ -1050,7 +1050,8 @@ static void rt2800usb_link_stats(struct rt2x00_dev *rt2x00dev,
static u8 rt2800usb_get_default_vgc(struct rt2x00_dev *rt2x00dev)
{
	if (rt2x00dev->curr_band == IEEE80211_BAND_2GHZ) {
		if (rt2x00_rev(&rt2x00dev->chip) == RT3070_VERSION)
		if (rt2x00_intf_is_usb(rt2x00dev) &&
		    rt2x00_rev(&rt2x00dev->chip) == RT3070_VERSION)
			return 0x1c + (2 * rt2x00dev->lna_gain);
		else
			return 0x2e + rt2x00dev->lna_gain;
@@ -1285,6 +1286,7 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
	u32 reg;
	unsigned int i;

	if (rt2x00_intf_is_usb(rt2x00dev)) {
		/*
		 * Wait untill BBP and RF are ready.
		 */
@@ -1301,17 +1303,21 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
		}

		rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, &reg);
	rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, reg & ~0x00002000);
		rt2800_register_write(rt2x00dev, PBF_SYS_CTRL,
				      reg & ~0x00002000);
	}

	rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &reg);
	rt2x00_set_field32(&reg, MAC_SYS_CTRL_RESET_CSR, 1);
	rt2x00_set_field32(&reg, MAC_SYS_CTRL_RESET_BBP, 1);
	rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, reg);

	if (rt2x00_intf_is_usb(rt2x00dev)) {
		rt2800_register_write(rt2x00dev, USB_DMA_CFG, 0x00000000);

		rt2x00usb_vendor_request_sw(rt2x00dev, USB_DEVICE_MODE, 0,
					    USB_MODE_RESET, REGISTER_TIMEOUT);
	}

	rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0x00000000);

@@ -1343,7 +1349,8 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
	rt2x00_set_field32(&reg, BCN_TIME_CFG_TX_TIME_COMPENSATE, 0);
	rt2800_register_write(rt2x00dev, BCN_TIME_CFG, reg);

	if (rt2x00_rev(&rt2x00dev->chip) == RT3070_VERSION) {
	if (rt2x00_intf_is_usb(rt2x00dev) &&
	    rt2x00_rev(&rt2x00dev->chip) == RT3070_VERSION) {
		rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400);
		rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000);
		rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
@@ -1461,6 +1468,7 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
	rt2x00_set_field32(&reg, GF40_PROT_CFG_TX_OP_ALLOW_GF40, 1);
	rt2800_register_write(rt2x00dev, GF40_PROT_CFG, reg);

	if (rt2x00_intf_is_usb(rt2x00dev)) {
		rt2800_register_write(rt2x00dev, PBF_CFG, 0xf40006);

		rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
@@ -1474,6 +1482,7 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
		rt2x00_set_field32(&reg, WPDMA_GLO_CFG_RX_HDR_SCATTER, 0);
		rt2x00_set_field32(&reg, WPDMA_GLO_CFG_HDR_SEG_LEN, 0);
		rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
	}

	rt2800_register_write(rt2x00dev, TXOP_CTRL_CFG, 0x0000583f);
	rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, 0x00000002);
@@ -1519,9 +1528,11 @@ static int rt2800usb_init_registers(struct rt2x00_dev *rt2x00dev)
	rt2800_register_write(rt2x00dev, HW_BEACON_BASE6, 0);
	rt2800_register_write(rt2x00dev, HW_BEACON_BASE7, 0);

	if (rt2x00_intf_is_usb(rt2x00dev)) {
		rt2800_register_read(rt2x00dev, USB_CYC_CFG, &reg);
		rt2x00_set_field32(&reg, USB_CYC_CFG_CLOCK_CYCLE, 30);
		rt2800_register_write(rt2x00dev, USB_CYC_CFG, reg);
	}

	rt2800_register_read(rt2x00dev, HT_FBK_CFG0, &reg);
	rt2x00_set_field32(&reg, HT_FBK_CFG0_HTMCS0FBK, 0);
@@ -1650,11 +1661,11 @@ static int rt2800usb_init_bbp(struct rt2x00_dev *rt2x00dev)
		rt2800_bbp_write(rt2x00dev, 73, 0x12);
	}

	if (rt2x00_rev(&rt2x00dev->chip) > RT2860D_VERSION) {
	if (rt2x00_rev(&rt2x00dev->chip) > RT2860D_VERSION)
		rt2800_bbp_write(rt2x00dev, 84, 0x19);
	}

	if (rt2x00_rev(&rt2x00dev->chip) == RT3070_VERSION) {
	if (rt2x00_intf_is_usb(rt2x00dev) &&
	    rt2x00_rev(&rt2x00dev->chip) == RT3070_VERSION) {
		rt2800_bbp_write(rt2x00dev, 70, 0x0a);
		rt2800_bbp_write(rt2x00dev, 84, 0x99);
		rt2800_bbp_write(rt2x00dev, 105, 0x05);
@@ -1738,7 +1749,8 @@ static int rt2800usb_init_rfcsr(struct rt2x00_dev *rt2x00dev)
	u8 rfcsr;
	u8 bbp;

	if (rt2x00_rev(&rt2x00dev->chip) != RT3070_VERSION)
	if (rt2x00_intf_is_usb(rt2x00dev) &&
	    rt2x00_rev(&rt2x00dev->chip) != RT3070_VERSION)
		return 0;

	/*
@@ -1751,6 +1763,7 @@ static int rt2800usb_init_rfcsr(struct rt2x00_dev *rt2x00dev)
	rt2x00_set_field8(&rfcsr, RFCSR30_RF_CALIBRATION, 0);
	rt2800_rfcsr_write(rt2x00dev, 30, rfcsr);

	if (rt2x00_intf_is_usb(rt2x00dev)) {
		rt2800_rfcsr_write(rt2x00dev, 4, 0x40);
		rt2800_rfcsr_write(rt2x00dev, 5, 0x03);
		rt2800_rfcsr_write(rt2x00dev, 6, 0x02);
@@ -1771,6 +1784,7 @@ static int rt2800usb_init_rfcsr(struct rt2x00_dev *rt2x00dev)
		rt2800_rfcsr_write(rt2x00dev, 25, 0x01);
		rt2800_rfcsr_write(rt2x00dev, 27, 0x03);
		rt2800_rfcsr_write(rt2x00dev, 29, 0x1f);
	}

	/*
	 * Set RX Filter calibration for 20MHz and 40MHz
@@ -2644,6 +2658,8 @@ static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev)
{
	int retval;

	rt2x00_set_chip_intf(rt2x00dev, RT2X00_CHIP_INTF_USB);

	rt2x00dev->priv = (void *)&rt2800usb_rt2800_ops;

	/*