> + * This driver was written as a replacement for the vendor provided
> + * rtl8723au driver. As the Realtek 8xxx chips are very similar in
> + * their programming interface, I have started adding support for
> + * additional 8xxx chips like the 8192cu, 8188cus, etc.
That last sentence here seems like it might be more suitable in the
commit message then here - you'll surely forget to update it ;)
> +> > /*
> +> > * MBOX ready?
> +> > */
> +> > retry = 100;
> +> > do {
> +> > > val8 = rtl8xxxu_read8(priv, REG_HMTFR);
> +> > > if (!(val8 & BIT(mbox_nr)))
> +> > > > break;
> +> > } while (retry--);
Seems fishy without any delay in the loop?
> +> > val32 = rtl8xxxu_read32(priv, REG_OFDM0_TRX_PATH_ENABLE);
> +> > val32 &= ~OFDM_RF_PATH_TX_MASK;
> +> > if (priv->tx_paths == 2)
"TX path" is very uncommon language for this... I'd suggest changing
all that to "TX stream" or "TX chain"?
> +> > if (priv->rf_paths == 2)
Similar here - and should that be RX not RF?
> +static int rtl8723a_channel_to_group(int channel)
> +{
> +> > int group;
> +
> +> > if (channel < 4)
> +> > > group = 0;
> +> > else if (channel < 10)
> +> > > group = 1;
> +> > else
> +> > > group = 2;
> +
> +> > return group;
> +}
Could remove the group variable, it's kinda pointless - just return
immediately?
if (channel < 4)
return 0;
if (channel < 10)
return 1;
return 2;
> +> > /* Poll for data read */
> +> > val32 = rtl8xxxu_read32(priv, REG_EFUSE_CTRL);
> +> > for (i = 0; i < RTL8XXXU_MAX_REG_POLL; i++) {
> +> > > val32 = rtl8xxxu_read32(priv, REG_EFUSE_CTRL);
> +> > > if (val32 & BIT(31))
> +> > > > break;
> +> > }
>
Hmm, similar poll loop like above w/o any delay?
A few more seem to exist too.
> +> > > > for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) {
> +> > > > > /* Check word enable condition in the section
> */
> +> > > > > if (!(word_mask & BIT(i))) {
> +> > > > > > ret = rtl8xxxu_read_efuse8(priv,
> +> > > > > > > > >
> efuse_addr++,
> +> > > > > > > > > &val8);
> +> > > > > > if (ret)
> +> > > > > > > goto exit;
> +> > > > > > priv->efuse_wifi.raw[map_addr++] =
> val8;
> +
> +> > > > > > ret = rtl8xxxu_read_efuse8(priv,
> +> > > > > > > > >
> efuse_addr++,
> +> > > > > > > > > &val8);
> +> > > > > > if (ret)
> +> > > > > > > goto exit;
> +> > > > > > priv->efuse_wifi.raw[map_addr++] =
> val8;
> +> > > > > } else
> +> > > > > > map_addr += 2;
> +> > > > }
seems like it might better be in a helper function :)
> +static int rtl8xxxu_init_phy_regs(struct rtl8xxxu_priv *priv,
> +> > > > > struct rtl8xxxu_reg32val *array)
> +{
> +> > int i, ret;
> +> > u16 reg;
> +> > u32 val;
> +
> +> > for (i = 0; ; i++) {
> +> > > reg = array[i].reg;
> +> > > val = array[i].val;
> +
> +> > > if (reg == 0xffff && val == 0xffffffff)
> +> > > > break;
Maybe passing ARRAY_SIZE to these would be nicer than having to they're
terminated? Dunno though, might be a lot of infrastructure to do that.
Ugh, getting too long for me - anything in particular I should look at?
:)
johannes
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html