Snippet for code to handle 8 bit  --- from current system not mmc-next for 
handling quirk on a per slot basis

platform specific configuration file in arch/arm/mach-mmp
============================================


struct pxasdh_platform_data {
        unsigned int ocr_mask;                  /* available voltages */
        unsigned long detect_delay;             /* delay in jiffies before 
detecting cards after interrupt */
        int (*init)(struct device *, irq_handler_t , void *);
        int (*get_ro)(struct device *);
        void (*setpower)(struct device *, unsigned int);
        void (*exit)(struct device *, void *);
        int (*mfp_config)(void);
        int (*get_cd)(struct device *);
        unsigned int max_speed;
        unsigned int quirks;
};


static struct pxasdh_platform_data mmp2brownstone_sdh_platform_data_mmc2 = {
        .detect_delay   = 20,
        .mfp_config     = sdh2_mfp_config,
        .pfn_table      = mmc2_pfn_cfg,
        .quirks         = QUIRK_SDH_PLATFORM_CARD_PRESENT | 
SDHCI_QUIRK_SLOT_CAN_DO_8_BITS,
};

static mfp_cfg_t mmp2brownstone_sdh3_pins[] = {
        GPIO165_MMC3_DAT7_PULL_HIGH,
        GPIO162_MMC3_DAT6_PULL_HIGH,
        GPIO166_MMC3_DAT5_PULL_HIGH,
        GPIO163_MMC3_DAT4_PULL_HIGH,
        GPIO167_MMC3_DAT3_PULL_HIGH,
        GPIO164_MMC3_DAT2_PULL_HIGH,
        GPIO168_MMC3_DAT1_PULL_HIGH,
        GPIO111_MMC3_DAT0_PULL_HIGH,
        GPIO112_MMC3_CMD_PULL_HIGH,
        GPIO151_MMC3_CLK,
};

in my platform specific sdio driver
==========================

        struct platform_device  *pdev;
        struct resource *res;
        struct sdhci_mmc_fixes  *fixes;
        unsigned int    quirks;
        int     num_slots;      /* Slots on controller */
        struct sdhci_mmc_slot   *slots[MAX_SLOTS];
        struct pxasdh_platform_data *pdata;
};


static int pxa_sdh_probe(struct platform_device *pdev)
{

<snip>
                chip->quirks |= slot->chip->pdata->quirks;

etc

}


On Nov 8, 2010, at 12:31 AM, Philip Rakity wrote:

> 
> I have the same issue -- in my case 2 slots can support 8 bits and one cannot.
> 
> I set the QURK in the platform data and the platform specific driver sets the 
> quirk on the specific slot that has 8 bit support.
> 
> Philip
> 
> 
> On Nov 8, 2010, at 12:24 AM, Kyungmin Park wrote:
> 
>> On Mon, Nov 8, 2010 at 4:21 PM, Philip Rakity <[email protected]> wrote:
>>> 
>>> On Nov 7, 2010, at 2:04 PM, Wolfram Sang wrote:
>>> 
>>>> On Fri, Oct 08, 2010 at 12:31:34PM -0700, Philip Rakity wrote:
>>>>> 
>>>>> 8 bit width is a new feature in the sd 3.0 spec.  Add checks to
>>>>> ensure HOST_CONTROL register set 8 bit mode only if sd 3.0
>>>>> 
>>>>> add quirk to indicate that board design supports 8 data lines.
>>>>> The controller can support 8 data bits but the board design may
>>>>> only bring out 4 data bits.
>>>> 
>>>> This isn't a quirk, this is platform_data, no?
>>> 
>>> Never sure of the difference between a quirk and platform data.
>>> example:  Broken card detect is a quirk but maybe some slots on the board 
>>> work and some do not
>> 
>> In my case, one slot uses the 8-bit but another is 4-bit so host quirk
>> is not acceptable.
>> I prefer the platform data also.
>> 
>> Thank you,
>> Kyungmin Park
>> 
>>> 
>>>> 
>>>> Without looking deeply into it, I think we need to use the callback you
>>>> introduced in the other patch?
>>>> 
>>> 
>>> It is needed in my experience because of how board design is done.  The 
>>> controller can support 8 bits
>>> but the board may not have DAT4-DAT7 connected.
>>> 
>>>> Regards,
>>>> 
>>>>  Wolfram
>>>> 
>>>> PS: Sorry if there already was a discussion I might have missed. The bus 
>>>> width
>>>> thingie became a bit scattered, so I lost track...
>>>> 
>>>> --
>>>> Pengutronix e.K.                           | Wolfram Sang                |
>>>> Industrial Linux Solutions                 | http://www.pengutronix.de/  |
>>> 
>>> --
>>> 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
>>> 
> 

--
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