Re: [PATCH net-next 4/6] r8152: support new chips

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 16 Apr 2021 16:04:35 +0800 Hayes Wang wrote:
> Support RTL8153C, RTL8153D, RTL8156A, and RTL8156B. The RTL8156A
> and RTL8156B are the 2.5G ethernet.
> 
> Signed-off-by: Hayes Wang <hayeswang@xxxxxxxxxxx>

> +	switch (tp->version) {
> +	case RTL_VER_10:
> +		data = ocp_reg_read(tp, 0xad40);
> +		data &= ~0x3ff;
> +		data |= BIT(7) | BIT(2);
> +		ocp_reg_write(tp, 0xad40, data);
> +
> +		data = ocp_reg_read(tp, 0xad4e);
> +		data |= BIT(4);
> +		ocp_reg_write(tp, 0xad4e, data);
> +		data = ocp_reg_read(tp, 0xad16);
> +		data &= ~0x3ff;
> +		data |= 0x6;
> +		ocp_reg_write(tp, 0xad16, data);
> +		data = ocp_reg_read(tp, 0xad32);
> +		data &= ~0x3f;
> +		data |= 6;
> +		ocp_reg_write(tp, 0xad32, data);
> +		data = ocp_reg_read(tp, 0xac08);
> +		data &= ~(BIT(12) | BIT(8));
> +		ocp_reg_write(tp, 0xac08, data);
> +		data = ocp_reg_read(tp, 0xac8a);
> +		data |= BIT(12) | BIT(13) | BIT(14);
> +		data &= ~BIT(15);
> +		ocp_reg_write(tp, 0xac8a, data);
> +		data = ocp_reg_read(tp, 0xad18);
> +		data |= BIT(10);
> +		ocp_reg_write(tp, 0xad18, data);
> +		data = ocp_reg_read(tp, 0xad1a);
> +		data |= 0x3ff;
> +		ocp_reg_write(tp, 0xad1a, data);
> +		data = ocp_reg_read(tp, 0xad1c);
> +		data |= 0x3ff;
> +		ocp_reg_write(tp, 0xad1c, data);
> +
> +		data = sram_read(tp, 0x80ea);
> +		data &= ~0xff00;
> +		data |= 0xc400;
> +		sram_write(tp, 0x80ea, data);
> +		data = sram_read(tp, 0x80eb);
> +		data &= ~0x0700;
> +		data |= 0x0300;
> +		sram_write(tp, 0x80eb, data);
> +		data = sram_read(tp, 0x80f8);
> +		data &= ~0xff00;
> +		data |= 0x1c00;
> +		sram_write(tp, 0x80f8, data);
> +		data = sram_read(tp, 0x80f1);
> +		data &= ~0xff00;
> +		data |= 0x3000;
> +		sram_write(tp, 0x80f1, data);

> +	switch (tp->version) {
> +	case RTL_VER_12:
> +		ocp_reg_write(tp, 0xbf86, 0x9000);
> +		data = ocp_reg_read(tp, 0xc402);
> +		data |= BIT(10);
> +		ocp_reg_write(tp, 0xc402, data);
> +		data &= ~BIT(10);
> +		ocp_reg_write(tp, 0xc402, data);
> +		ocp_reg_write(tp, 0xbd86, 0x1010);
> +		ocp_reg_write(tp, 0xbd88, 0x1010);
> +		data = ocp_reg_read(tp, 0xbd4e);
> +		data &= ~(BIT(10) | BIT(11));
> +		data |= BIT(11);
> +		ocp_reg_write(tp, 0xbd4e, data);
> +		data = ocp_reg_read(tp, 0xbf46);
> +		data &= ~0xf00;
> +		data |= 0x700;
> +		ocp_reg_write(tp, 0xbf46, data);

> +	data = r8153_phy_status(tp, 0);
> +	switch (data) {
> +	case PHY_STAT_EXT_INIT:
> +		rtl8152_apply_firmware(tp, true);
> +
> +		data = ocp_reg_read(tp, 0xa466);
> +		data &= ~BIT(0);
> +		ocp_reg_write(tp, 0xa466, data);

What are all these magic constants? :(

> @@ -6878,7 +8942,11 @@ static int rtl8152_probe(struct usb_interface *intf,
>  	set_ethernet_addr(tp);
>  
>  	usb_set_intfdata(intf, tp);
> -	netif_napi_add(netdev, &tp->napi, r8152_poll, RTL8152_NAPI_WEIGHT);
> +
> +	if (tp->support_2500full)
> +		netif_napi_add(netdev, &tp->napi, r8152_poll, 256);

why 256? We have 100G+ drivers all using 64 what's special here?

> +	else
> +		netif_napi_add(netdev, &tp->napi, r8152_poll, 64);




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux