and a 
host->ops-> get_max_clock()
function that is used to set the max clock.  The code snippet is below


        host->max_clk =
                (caps & SDHCI_CLOCK_BASE_MASK) >> SDHCI_CLOCK_BASE_SHIFT;
        host->max_clk *= 1000000;
        if (host->max_clk == 0 || host->quirks &
                        SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN) {
                if (!host->ops->get_max_clock) {
                        printk(KERN_ERR
                               "%s: Hardware doesn't specify base clock "
                               "frequency.\n", mmc_hostname(mmc));
                        return -ENODEV;
                }
                host->max_clk = host->ops->get_max_clock(host);
        }


The quirk seems redundant since this could be coded as follows to remove the 
need for the quirk

> +     if (host->ops->get_max_clock)
>               host->max_clk = host->ops->get_max_clock(host);
> +     else {
> +             host->max_clk =
> +                     (caps & SDHCI_CLOCK_BASE_MASK) 
> +                             >> SDHCI_CLOCK_BASE_SHIFT;
> +             host->max_clk *= 1000000;
> +     }
> +
> +     if (host->max_clk == 0) {
> +             printk(KERN_ERR
> +                    "%s: Hardware doesn't specify base clock "
> +                    "frequency.\n", mmc_hostname(mmc));
> +             return -ENODEV;
>       }
> 


This approach was not used since it was felt a quirk was needed.

http://kerneltrap.org/mailarchive/linux-kernel/2010/2/19/4540115

but the quirk redundant and it requires two items be set; the quirk and the 
callback.
Defining the quirk and not the callback is meaningless.  

The change proposed by Richard Zhu for handling write protect uses only a 
callback.

<snip>
static int sdhci_get_ro(struct mmc_host *mmc)
{
        struct sdhci_host *host;
        unsigned long flags;
        int present;

        host = mmc_priv(mmc);

        if (host->ops->get_ro)
                return host->ops->get_ro(host);

        spin_lock_irqsave(&host->lock, flags);

<end snip>

What is the correct practice?  

Philip--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to