Re: [PATCH v3 1/2] mfd: rtsx: reduce code duplication in rtl8411

From: Dan Carpenter
Date: Tue Dec 17 2013 - 03:04:10 EST


On Tue, Dec 17, 2013 at 10:36:58AM +0800, micky_ching@xxxxxxxxxxxxxx wrote:
> void rtl8411b_init_params(struct rtsx_pcr *pcr)
> {
> - pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104;
> - pcr->num_slots = 2;
> - pcr->ops = &rtl8411b_pcr_ops;
> -
> - pcr->flags = 0;
> - pcr->card_drive_sel = RTL8411_CARD_DRIVE_DEFAULT;
> - pcr->sd30_drive_sel_1v8 = DRIVER_TYPE_B;
> - pcr->sd30_drive_sel_3v3 = DRIVER_TYPE_D;
> - pcr->aspm_en = ASPM_L1_EN;
> - pcr->tx_initial_phase = SET_CLOCK_PHASE(23, 7, 14);
> - pcr->rx_initial_phase = SET_CLOCK_PHASE(4, 3, 10);
> + rtl8411_init_params(pcr);
>
> - pcr->ic_version = rtl8411_get_ic_version(pcr);
> + rtl8411_pcr_ops.fetch_vendor_settings =
> + rtl8411b_fetch_vendor_settings;
> + rtl8411_pcr_ops.extra_init_hw = rtl8411b_extra_init_hw;
>

This is a bug here. If we have both kinds of devices connected at the
same time then the kernel crashes.

Really structures which hold function pointers should be const. This
code is not as good as the original.

regards,
dan carpenter

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/