diff for duplicates of <20101001112926.GC3064@sortiz-mobl> diff --git a/a/1.txt b/N1/1.txt index ce04737..7e6e653 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -54,169 +54,169 @@ Samuel. > >>>> Cc: Adrian Hunter <adrian.hunter@nokia.com> > >>>> Signed-off-by: Kishore Kadiyala <kishore.kadiyala@ti.com> > >>>> --- -> >>>> arch/arm/mach-omap2/board-4430sdp.c | 7 +++- -> >>>> drivers/mfd/twl6030-irq.c | 73 +++++++++++++++++++++++++++++++++++ -> >>>> drivers/mmc/host/omap_hsmmc.c | 4 +- -> >>>> include/linux/i2c/twl.h | 31 +++++++++++++++ -> >>>> 4 files changed, 112 insertions(+), 3 deletions(-) +> >>>> ?arch/arm/mach-omap2/board-4430sdp.c | ? ?7 +++- +> >>>> ?drivers/mfd/twl6030-irq.c ? ? ? ? ? | ? 73 +++++++++++++++++++++++++++++++++++ +> >>>> ?drivers/mmc/host/omap_hsmmc.c ? ? ? | ? ?4 +- +> >>>> ?include/linux/i2c/twl.h ? ? ? ? ? ? | ? 31 +++++++++++++++ +> >>>> ?4 files changed, 112 insertions(+), 3 deletions(-) > >>>> > >>>> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c > >>>> index 9447644..a49f285 100644 > >>>> --- a/arch/arm/mach-omap2/board-4430sdp.c > >>>> +++ b/arch/arm/mach-omap2/board-4430sdp.c > >>>> @@ -227,9 +227,14 @@ static int omap4_twl6030_hsmmc_late_init(struct device *dev) -> >>>> struct omap_mmc_platform_data *pdata = dev->platform_data; +> >>>> ? ? ? ?struct omap_mmc_platform_data *pdata = dev->platform_data; > >>>> -> >>>> /* Setting MMC1 Card detect Irq */ -> >>>> - if (pdev->id == 0) -> >>>> + if (pdev->id == 0) { -> >>>> + ret = twl6030_mmc_card_detect_config(); -> >>>> + if (ret) -> >>>> + pr_err("Failed configuring MMC1 card detect\n"); -> >>>> pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE + -> >>>> MMCDETECT_INTR_OFFSET; -> >>>> + pdata->slots[0].card_detect = twl6030_mmc_card_detect; -> >>>> + } -> >>>> return ret; -> >>>> } +> >>>> ? ? ? ?/* Setting MMC1 Card detect Irq */ +> >>>> - ? ? ? if (pdev->id == 0) +> >>>> + ? ? ? if (pdev->id == 0) { +> >>>> + ? ? ? ? ? ? ? ret = twl6030_mmc_card_detect_config(); +> >>>> + ? ? ? ? ? ? ? if (ret) +> >>>> + ? ? ? ? ? ? ? ? ? ? ? pr_err("Failed configuring MMC1 card detect\n"); +> >>>> ? ? ? ? ? ? ? ?pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE + +> >>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?MMCDETECT_INTR_OFFSET; +> >>>> + ? ? ? ? ? ? ? pdata->slots[0].card_detect = twl6030_mmc_card_detect; +> >>>> + ? ? ? } +> >>>> ? ? ? ?return ret; +> >>>> ?} > >>>> > >>>> diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c > >>>> index 10bf228..2d3bb82 100644 > >>>> --- a/drivers/mfd/twl6030-irq.c > >>>> +++ b/drivers/mfd/twl6030-irq.c > >>>> @@ -36,6 +36,7 @@ -> >>>> #include <linux/irq.h> -> >>>> #include <linux/kthread.h> -> >>>> #include <linux/i2c/twl.h> +> >>>> ?#include <linux/irq.h> +> >>>> ?#include <linux/kthread.h> +> >>>> ?#include <linux/i2c/twl.h> > >>>> +#include <linux/platform_device.h> > >>>> -> >>>> /* -> >>>> * TWL6030 (unlike its predecessors, which had two level interrupt handling) +> >>>> ?/* +> >>>> ?* TWL6030 (unlike its predecessors, which had two level interrupt handling) > >>>> @@ -223,6 +224,78 @@ int twl6030_interrupt_mask(u8 bit_mask, u8 offset) -> >>>> } -> >>>> EXPORT_SYMBOL(twl6030_interrupt_mask); +> >>>> ?} +> >>>> ?EXPORT_SYMBOL(twl6030_interrupt_mask); > >>>> > >>>> +int twl6030_mmc_card_detect_config(void) > >>>> +{ -> >>>> + int ret; -> >>>> + u8 reg_val = 0; +> >>>> + ? ? ? int ret; +> >>>> + ? ? ? u8 reg_val = 0; > >>>> + -> >>>> + /* Unmasking the Card detect Interrupt line for MMC1 from Phoenix */ -> >>>> + twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK, -> >>>> + REG_INT_MSK_LINE_B); -> >>>> + twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK, -> >>>> + REG_INT_MSK_STS_B); -> >>>> + /* -> >>>> + * Intially Configuring MMC_CTRL for receving interrupts & -> >>>> + * Card status on TWL6030 for MMC1 -> >>>> + */ -> >>>> + ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val, TWL6030_MMCCTRL); -> >>>> + if (ret < 0) { -> >>>> + pr_err("twl6030: Failed to read MMCCTRL, error %d\n", ret); -> >>>> + return ret; -> >>>> + } -> >>>> + reg_val &= ~VMMC_AUTO_OFF; -> >>>> + reg_val |= SW_FC; -> >>>> + ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, TWL6030_MMCCTRL); -> >>>> + if (ret < 0) { -> >>>> + pr_err("twl6030: Failed to write MMCCTRL, error %d\n", ret); -> >>>> + return ret; -> >>>> + } +> >>>> + ? ? ? /* Unmasking the Card detect Interrupt line for MMC1 from Phoenix */ +> >>>> + ? ? ? twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK, +> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? REG_INT_MSK_LINE_B); +> >>>> + ? ? ? twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK, +> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? REG_INT_MSK_STS_B); +> >>>> + ? ? ? /* +> >>>> + ? ? ? ?* Intially Configuring MMC_CTRL for receving interrupts & +> >>>> + ? ? ? ?* Card status on TWL6030 for MMC1 +> >>>> + ? ? ? ?*/ +> >>>> + ? ? ? ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val, TWL6030_MMCCTRL); +> >>>> + ? ? ? if (ret < 0) { +> >>>> + ? ? ? ? ? ? ? pr_err("twl6030: Failed to read MMCCTRL, error %d\n", ret); +> >>>> + ? ? ? ? ? ? ? return ret; +> >>>> + ? ? ? } +> >>>> + ? ? ? reg_val &= ~VMMC_AUTO_OFF; +> >>>> + ? ? ? reg_val |= SW_FC; +> >>>> + ? ? ? ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, TWL6030_MMCCTRL); +> >>>> + ? ? ? if (ret < 0) { +> >>>> + ? ? ? ? ? ? ? pr_err("twl6030: Failed to write MMCCTRL, error %d\n", ret); +> >>>> + ? ? ? ? ? ? ? return ret; +> >>>> + ? ? ? } > >>>> + -> >>>> + /* Configuring PullUp-PullDown register */ -> >>>> + ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val, -> >>>> + TWL6030_CFG_INPUT_PUPD3); -> >>>> + if (ret < 0) { -> >>>> + pr_err("twl6030: Failed to read CFG_INPUT_PUPD3, error %d\n", -> >>>> + ret); -> >>>> + return ret; -> >>>> + } -> >>>> + reg_val &= ~(MMC_PU | MMC_PD); -> >>>> + ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, -> >>>> + TWL6030_CFG_INPUT_PUPD3); -> >>>> + if (ret < 0) { -> >>>> + pr_err("twl6030: Failed to write CFG_INPUT_PUPD3, error %d\n", -> >>>> + ret); -> >>>> + return ret; -> >>>> + } -> >>>> + return 0; +> >>>> + ? ? ? /* Configuring PullUp-PullDown register */ +> >>>> + ? ? ? ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val, +> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TWL6030_CFG_INPUT_PUPD3); +> >>>> + ? ? ? if (ret < 0) { +> >>>> + ? ? ? ? ? ? ? pr_err("twl6030: Failed to read CFG_INPUT_PUPD3, error %d\n", +> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ret); +> >>>> + ? ? ? ? ? ? ? return ret; +> >>>> + ? ? ? } +> >>>> + ? ? ? reg_val &= ~(MMC_PU | MMC_PD); +> >>>> + ? ? ? ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, +> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TWL6030_CFG_INPUT_PUPD3); +> >>>> + ? ? ? if (ret < 0) { +> >>>> + ? ? ? ? ? ? ? pr_err("twl6030: Failed to write CFG_INPUT_PUPD3, error %d\n", +> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ret); +> >>>> + ? ? ? ? ? ? ? return ret; +> >>>> + ? ? ? } +> >>>> + ? ? ? return 0; > >>>> +} > >>>> +EXPORT_SYMBOL(twl6030_mmc_card_detect_config); > >>>> + > >>>> +int twl6030_mmc_card_detect(struct device *dev, int slot) > >>>> +{ -> >>>> + int ret = -EIO; -> >>>> + u8 read_reg = 0; -> >>>> + struct platform_device *pdev = to_platform_device(dev); +> >>>> + ? ? ? int ret = -EIO; +> >>>> + ? ? ? u8 read_reg = 0; +> >>>> + ? ? ? struct platform_device *pdev = to_platform_device(dev); > >>>> + -> >>>> + if (pdev->id) { -> >>>> + /* TWL6030 provide's Card detect support for -> >>>> + * only MMC1 controller. -> >>>> + */ -> >>>> + pr_err("Unkown MMC controller %d in %s\n", pdev->id, __func__); -> >>>> + return ret; -> >>>> + } -> >>>> + /* -> >>>> + * BIT0 of MMC_CTRL on TWL6030 provides card status for MMC1 -> >>>> + * 0 - Card not present ,1 - Card present -> >>>> + */ -> >>>> + ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, &read_reg, -> >>>> + TWL6030_MMCCTRL); -> >>>> + if (ret >= 0) -> >>>> + ret = read_reg & STS_MMC; -> >>>> + return ret; +> >>>> + ? ? ? if (pdev->id) { +> >>>> + ? ? ? ? ? ? ? /* TWL6030 provide's Card detect support for +> >>>> + ? ? ? ? ? ? ? ?* only MMC1 controller. +> >>>> + ? ? ? ? ? ? ? ?*/ +> >>>> + ? ? ? ? ? ? ? pr_err("Unkown MMC controller %d in %s\n", pdev->id, __func__); +> >>>> + ? ? ? ? ? ? ? return ret; +> >>>> + ? ? ? } +> >>>> + ? ? ? /* +> >>>> + ? ? ? ?* BIT0 of MMC_CTRL on TWL6030 provides card status for MMC1 +> >>>> + ? ? ? ?* 0 - Card not present ,1 - Card present +> >>>> + ? ? ? ?*/ +> >>>> + ? ? ? ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, &read_reg, +> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TWL6030_MMCCTRL); +> >>>> + ? ? ? if (ret >= 0) +> >>>> + ? ? ? ? ? ? ? ret = read_reg & STS_MMC; +> >>>> + ? ? ? return ret; > >>>> +} > >>>> +EXPORT_SYMBOL(twl6030_mmc_card_detect); > >>>> + -> >>>> int twl6030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end) -> >>>> { +> >>>> ?int twl6030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end) +> >>>> ?{ > >>>> > >>>> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c > >>>> index 562dbbb..a51894d 100644 > >>>> --- a/drivers/mmc/host/omap_hsmmc.c > >>>> +++ b/drivers/mmc/host/omap_hsmmc.c > >>>> @@ -466,8 +466,6 @@ static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata) -> >>>> int ret; +> >>>> ? ? ? ?int ret; > >>>> -> >>>> if (gpio_is_valid(pdata->slots[0].switch_pin)) { -> >>>> - pdata->suspend = omap_hsmmc_suspend_cdirq; -> >>>> - pdata->resume = omap_hsmmc_resume_cdirq; -> >>>> if (pdata->slots[0].cover) -> >>>> pdata->slots[0].get_cover_state = -> >>>> omap_hsmmc_get_cover_state; +> >>>> ? ? ? ?if (gpio_is_valid(pdata->slots[0].switch_pin)) { +> >>>> - ? ? ? ? ? ? ? pdata->suspend = omap_hsmmc_suspend_cdirq; +> >>>> - ? ? ? ? ? ? ? pdata->resume = omap_hsmmc_resume_cdirq; +> >>>> ? ? ? ? ? ? ? ?if (pdata->slots[0].cover) +> >>>> ? ? ? ? ? ? ? ? ? ? ? ?pdata->slots[0].get_cover_state = +> >>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?omap_hsmmc_get_cover_state; > >>>> @@ -2211,6 +2209,8 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) -> >>>> "Unable to grab MMC CD IRQ\n"); -> >>>> goto err_irq_cd; -> >>>> } -> >>>> + pdata->suspend = omap_hsmmc_suspend_cdirq; -> >>>> + pdata->resume = omap_hsmmc_resume_cdirq; -> >>>> } +> >>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"Unable to grab MMC CD IRQ\n"); +> >>>> ? ? ? ? ? ? ? ? ? ? ? ?goto err_irq_cd; +> >>>> ? ? ? ? ? ? ? ?} +> >>>> + ? ? ? ? ? ? ? pdata->suspend = omap_hsmmc_suspend_cdirq; +> >>>> + ? ? ? ? ? ? ? pdata->resume = omap_hsmmc_resume_cdirq; +> >>>> ? ? ? ?} > >>>> -> >>>> omap_hsmmc_disable_irq(host); +> >>>> ? ? ? ?omap_hsmmc_disable_irq(host); > >>>> diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h > >>>> index 6de90bf..e64894c 100644 > >>>> --- a/include/linux/i2c/twl.h > >>>> +++ b/include/linux/i2c/twl.h > >>>> @@ -141,6 +141,16 @@ -> >>>> #define TWL6030_CHARGER_CTRL_INT_MASK 0x10 -> >>>> #define TWL6030_CHARGER_FAULT_INT_MASK 0x60 +> >>>> ?#define TWL6030_CHARGER_CTRL_INT_MASK ?0x10 +> >>>> ?#define TWL6030_CHARGER_FAULT_INT_MASK ? ? ? ? 0x60 > >>>> -> >>>> +#define TWL6030_MMCCTRL 0xEE -> >>>> +#define VMMC_AUTO_OFF (0x1 << 3) -> >>>> +#define SW_FC (0x1 << 2) -> >>>> +#define STS_MMC 0x1 +> >>>> +#define TWL6030_MMCCTRL ? ? ? ? ? ? ? ?0xEE +> >>>> +#define VMMC_AUTO_OFF ? ? ? ? ? ? ? ? ?(0x1 << 3) +> >>>> +#define SW_FC ? ? ? ? ? ? ? ? ? ? ? ? ?(0x1 << 2) +> >>>> +#define STS_MMC ? ? ? ? ? ? ? ? ? ? ? ?0x1 > >>>> + -> >>>> +#define TWL6030_CFG_INPUT_PUPD3 0xF2 -> >>>> +#define MMC_PU (0x1 << 3) -> >>>> +#define MMC_PD (0x1 << 2) +> >>>> +#define TWL6030_CFG_INPUT_PUPD3 ? ? ? ?0xF2 +> >>>> +#define MMC_PU ? ? ? ? ? ? ? ? ? ? ? ? (0x1 << 3) +> >>>> +#define MMC_PD ? ? ? ? ? ? ? ? ? ? ? ? (0x1 << 2) > >>>> + > >>>> + > >>>> -> >>>> #define TWL4030_CLASS_ID 0x4030 -> >>>> #define TWL6030_CLASS_ID 0x6030 +> >>>> ?#define TWL4030_CLASS_ID ? ? ? ? ? ? ? 0x4030 +> >>>> ?#define TWL6030_CLASS_ID ? ? ? ? ? ? ? 0x6030 > >>>> @@ -173,6 +183,27 @@ int twl_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes); -> >>>> int twl6030_interrupt_unmask(u8 bit_mask, u8 offset); -> >>>> int twl6030_interrupt_mask(u8 bit_mask, u8 offset); +> >>>> ?int twl6030_interrupt_unmask(u8 bit_mask, u8 offset); +> >>>> ?int twl6030_interrupt_mask(u8 bit_mask, u8 offset); > >>>> > >>>> +/* Card detect Configuration for MMC1 Controller on OMAP4 */ > >>>> +#ifdef CONFIG_TWL4030_CORE @@ -224,8 +224,8 @@ Samuel. > >>>> +#else > >>>> +static inline int twl6030_mmc_card_detect_config(void) > >>>> +{ -> >>>> + pr_debug("twl6030_mmc_card_detect_config not supported\n"); -> >>>> + return 0; +> >>>> + ? ? ? pr_debug("twl6030_mmc_card_detect_config not supported\n"); +> >>>> + ? ? ? return 0; > >>>> +} > >>>> +#endif > >>>> + @@ -235,21 +235,21 @@ Samuel. > >>>> +#else > >>>> +static inline int twl6030_mmc_card_detect(struct device *dev, int slot) > >>>> +{ -> >>>> + pr_debug("Call back twl6030_mmc_card_detect not supported\n"); -> >>>> + return -EIO; +> >>>> + ? ? ? pr_debug("Call back twl6030_mmc_card_detect not supported\n"); +> >>>> + ? ? ? return -EIO; > >>>> +} > >>>> +#endif -> >>>> /*----------------------------------------------------------------------*/ +> >>>> ?/*----------------------------------------------------------------------*/ > >>>> -> >>>> /* +> >>>> ?/* > >>>> -- > >>>> 1.7.0.4 > >>>> > >>>> > >>>> -- > >>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in -> >>>> the body of a message to majordomo@vger.kernel.org -> >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html +> >>>> the body of a message to majordomo at vger.kernel.org +> >>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html > >>>> > >>> > >> @@ -258,7 +258,3 @@ Samuel. -- Intel Open Source Technology Centre http://oss.intel.com/ --- -To unsubscribe from this list: send the line "unsubscribe linux-omap" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N1/content_digest index 45b9c86..1c1ee5a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -3,17 +3,10 @@ "ref\0AANLkTim5d6XP0nuJLF2DxDGP2DuBK5VUajd=YhXQnT2C@mail.gmail.com\0" "ref\0AANLkTi=oX7CT8RF39kT-7niutF3PEeSeC1A_L5TcWuO4@mail.gmail.com\0" "ref\0AANLkTim1H=qam8Sjbv_EUXGtf09TObTViYMiN17uMFQ1@mail.gmail.com\0" - "From\0Samuel Ortiz <sameo@linux.intel.com>\0" - "Subject\0Re: [PATCH v4 1/4] omap4 hsmmc: Adding card detect support for MMC1\0" + "From\0sameo@linux.intel.com (Samuel Ortiz)\0" + "Subject\0[PATCH v4 1/4] omap4 hsmmc: Adding card detect support for MMC1\0" "Date\0Fri, 1 Oct 2010 13:29:27 +0200\0" - "To\0kishore kadiyala <kishorek.kadiyala@gmail.com>\0" - "Cc\0linux-mmc@vger.kernel.org" - linux-omap@vger.kernel.org - linux-arm-kernel@lists.infradead.org - tony@atomide.com - akpm@linux-foundation.org - madhu.cr@ti.com - " adrian.hunter@nokia.com\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "On Fri, Oct 01, 2010 at 12:29:48PM +0530, kishore kadiyala wrote:\n" @@ -72,169 +65,169 @@ "> >>>> Cc: Adrian Hunter <adrian.hunter@nokia.com>\n" "> >>>> Signed-off-by: Kishore Kadiyala <kishore.kadiyala@ti.com>\n" "> >>>> ---\n" - "> >>>> \302\240arch/arm/mach-omap2/board-4430sdp.c | \302\240 \302\2407 +++-\n" - "> >>>> \302\240drivers/mfd/twl6030-irq.c \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 73 +++++++++++++++++++++++++++++++++++\n" - "> >>>> \302\240drivers/mmc/host/omap_hsmmc.c \302\240 \302\240 \302\240 | \302\240 \302\2404 +-\n" - "> >>>> \302\240include/linux/i2c/twl.h \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 | \302\240 31 +++++++++++++++\n" - "> >>>> \302\2404 files changed, 112 insertions(+), 3 deletions(-)\n" + "> >>>> ?arch/arm/mach-omap2/board-4430sdp.c | ? ?7 +++-\n" + "> >>>> ?drivers/mfd/twl6030-irq.c ? ? ? ? ? | ? 73 +++++++++++++++++++++++++++++++++++\n" + "> >>>> ?drivers/mmc/host/omap_hsmmc.c ? ? ? | ? ?4 +-\n" + "> >>>> ?include/linux/i2c/twl.h ? ? ? ? ? ? | ? 31 +++++++++++++++\n" + "> >>>> ?4 files changed, 112 insertions(+), 3 deletions(-)\n" "> >>>>\n" "> >>>> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c\n" "> >>>> index 9447644..a49f285 100644\n" "> >>>> --- a/arch/arm/mach-omap2/board-4430sdp.c\n" "> >>>> +++ b/arch/arm/mach-omap2/board-4430sdp.c\n" "> >>>> @@ -227,9 +227,14 @@ static int omap4_twl6030_hsmmc_late_init(struct device *dev)\n" - "> >>>> \302\240 \302\240 \302\240 \302\240struct omap_mmc_platform_data *pdata = dev->platform_data;\n" + "> >>>> ? ? ? ?struct omap_mmc_platform_data *pdata = dev->platform_data;\n" "> >>>>\n" - "> >>>> \302\240 \302\240 \302\240 \302\240/* Setting MMC1 Card detect Irq */\n" - "> >>>> - \302\240 \302\240 \302\240 if (pdev->id == 0)\n" - "> >>>> + \302\240 \302\240 \302\240 if (pdev->id == 0) {\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 ret = twl6030_mmc_card_detect_config();\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (ret)\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"Failed configuring MMC1 card detect\\n\");\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE +\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240MMCDETECT_INTR_OFFSET;\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pdata->slots[0].card_detect = twl6030_mmc_card_detect;\n" - "> >>>> + \302\240 \302\240 \302\240 }\n" - "> >>>> \302\240 \302\240 \302\240 \302\240return ret;\n" - "> >>>> \302\240}\n" + "> >>>> ? ? ? ?/* Setting MMC1 Card detect Irq */\n" + "> >>>> - ? ? ? if (pdev->id == 0)\n" + "> >>>> + ? ? ? if (pdev->id == 0) {\n" + "> >>>> + ? ? ? ? ? ? ? ret = twl6030_mmc_card_detect_config();\n" + "> >>>> + ? ? ? ? ? ? ? if (ret)\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? pr_err(\"Failed configuring MMC1 card detect\\n\");\n" + "> >>>> ? ? ? ? ? ? ? ?pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE +\n" + "> >>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?MMCDETECT_INTR_OFFSET;\n" + "> >>>> + ? ? ? ? ? ? ? pdata->slots[0].card_detect = twl6030_mmc_card_detect;\n" + "> >>>> + ? ? ? }\n" + "> >>>> ? ? ? ?return ret;\n" + "> >>>> ?}\n" "> >>>>\n" "> >>>> diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c\n" "> >>>> index 10bf228..2d3bb82 100644\n" "> >>>> --- a/drivers/mfd/twl6030-irq.c\n" "> >>>> +++ b/drivers/mfd/twl6030-irq.c\n" "> >>>> @@ -36,6 +36,7 @@\n" - "> >>>> \302\240#include <linux/irq.h>\n" - "> >>>> \302\240#include <linux/kthread.h>\n" - "> >>>> \302\240#include <linux/i2c/twl.h>\n" + "> >>>> ?#include <linux/irq.h>\n" + "> >>>> ?#include <linux/kthread.h>\n" + "> >>>> ?#include <linux/i2c/twl.h>\n" "> >>>> +#include <linux/platform_device.h>\n" "> >>>>\n" - "> >>>> \302\240/*\n" - "> >>>> \302\240* TWL6030 (unlike its predecessors, which had two level interrupt handling)\n" + "> >>>> ?/*\n" + "> >>>> ?* TWL6030 (unlike its predecessors, which had two level interrupt handling)\n" "> >>>> @@ -223,6 +224,78 @@ int twl6030_interrupt_mask(u8 bit_mask, u8 offset)\n" - "> >>>> \302\240}\n" - "> >>>> \302\240EXPORT_SYMBOL(twl6030_interrupt_mask);\n" + "> >>>> ?}\n" + "> >>>> ?EXPORT_SYMBOL(twl6030_interrupt_mask);\n" "> >>>>\n" "> >>>> +int twl6030_mmc_card_detect_config(void)\n" "> >>>> +{\n" - "> >>>> + \302\240 \302\240 \302\240 int ret;\n" - "> >>>> + \302\240 \302\240 \302\240 u8 reg_val = 0;\n" + "> >>>> + ? ? ? int ret;\n" + "> >>>> + ? ? ? u8 reg_val = 0;\n" "> >>>> +\n" - "> >>>> + \302\240 \302\240 \302\240 /* Unmasking the Card detect Interrupt line for MMC1 from Phoenix */\n" - "> >>>> + \302\240 \302\240 \302\240 twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK,\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 REG_INT_MSK_LINE_B);\n" - "> >>>> + \302\240 \302\240 \302\240 twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK,\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 REG_INT_MSK_STS_B);\n" - "> >>>> + \302\240 \302\240 \302\240 /*\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240* Intially Configuring MMC_CTRL for receving interrupts &\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240* Card status on TWL6030 for MMC1\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240*/\n" - "> >>>> + \302\240 \302\240 \302\240 ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val, TWL6030_MMCCTRL);\n" - "> >>>> + \302\240 \302\240 \302\240 if (ret < 0) {\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"twl6030: Failed to read MMCCTRL, error %d\\n\", ret);\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return ret;\n" - "> >>>> + \302\240 \302\240 \302\240 }\n" - "> >>>> + \302\240 \302\240 \302\240 reg_val &= ~VMMC_AUTO_OFF;\n" - "> >>>> + \302\240 \302\240 \302\240 reg_val |= SW_FC;\n" - "> >>>> + \302\240 \302\240 \302\240 ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, TWL6030_MMCCTRL);\n" - "> >>>> + \302\240 \302\240 \302\240 if (ret < 0) {\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"twl6030: Failed to write MMCCTRL, error %d\\n\", ret);\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return ret;\n" - "> >>>> + \302\240 \302\240 \302\240 }\n" + "> >>>> + ? ? ? /* Unmasking the Card detect Interrupt line for MMC1 from Phoenix */\n" + "> >>>> + ? ? ? twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK,\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? REG_INT_MSK_LINE_B);\n" + "> >>>> + ? ? ? twl6030_interrupt_unmask(TWL6030_MMCDETECT_INT_MASK,\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? REG_INT_MSK_STS_B);\n" + "> >>>> + ? ? ? /*\n" + "> >>>> + ? ? ? ?* Intially Configuring MMC_CTRL for receving interrupts &\n" + "> >>>> + ? ? ? ?* Card status on TWL6030 for MMC1\n" + "> >>>> + ? ? ? ?*/\n" + "> >>>> + ? ? ? ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val, TWL6030_MMCCTRL);\n" + "> >>>> + ? ? ? if (ret < 0) {\n" + "> >>>> + ? ? ? ? ? ? ? pr_err(\"twl6030: Failed to read MMCCTRL, error %d\\n\", ret);\n" + "> >>>> + ? ? ? ? ? ? ? return ret;\n" + "> >>>> + ? ? ? }\n" + "> >>>> + ? ? ? reg_val &= ~VMMC_AUTO_OFF;\n" + "> >>>> + ? ? ? reg_val |= SW_FC;\n" + "> >>>> + ? ? ? ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val, TWL6030_MMCCTRL);\n" + "> >>>> + ? ? ? if (ret < 0) {\n" + "> >>>> + ? ? ? ? ? ? ? pr_err(\"twl6030: Failed to write MMCCTRL, error %d\\n\", ret);\n" + "> >>>> + ? ? ? ? ? ? ? return ret;\n" + "> >>>> + ? ? ? }\n" "> >>>> +\n" - "> >>>> + \302\240 \302\240 \302\240 /* Configuring PullUp-PullDown register */\n" - "> >>>> + \302\240 \302\240 \302\240 ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val,\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 TWL6030_CFG_INPUT_PUPD3);\n" - "> >>>> + \302\240 \302\240 \302\240 if (ret < 0) {\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"twl6030: Failed to read CFG_INPUT_PUPD3, error %d\\n\",\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 ret);\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return ret;\n" - "> >>>> + \302\240 \302\240 \302\240 }\n" - "> >>>> + \302\240 \302\240 \302\240 reg_val &= ~(MMC_PU | MMC_PD);\n" - "> >>>> + \302\240 \302\240 \302\240 ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val,\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 TWL6030_CFG_INPUT_PUPD3);\n" - "> >>>> + \302\240 \302\240 \302\240 if (ret < 0) {\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"twl6030: Failed to write CFG_INPUT_PUPD3, error %d\\n\",\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 ret);\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return ret;\n" - "> >>>> + \302\240 \302\240 \302\240 }\n" - "> >>>> + \302\240 \302\240 \302\240 return 0;\n" + "> >>>> + ? ? ? /* Configuring PullUp-PullDown register */\n" + "> >>>> + ? ? ? ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, ®_val,\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TWL6030_CFG_INPUT_PUPD3);\n" + "> >>>> + ? ? ? if (ret < 0) {\n" + "> >>>> + ? ? ? ? ? ? ? pr_err(\"twl6030: Failed to read CFG_INPUT_PUPD3, error %d\\n\",\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ret);\n" + "> >>>> + ? ? ? ? ? ? ? return ret;\n" + "> >>>> + ? ? ? }\n" + "> >>>> + ? ? ? reg_val &= ~(MMC_PU | MMC_PD);\n" + "> >>>> + ? ? ? ret = twl_i2c_write_u8(TWL6030_MODULE_ID0, reg_val,\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TWL6030_CFG_INPUT_PUPD3);\n" + "> >>>> + ? ? ? if (ret < 0) {\n" + "> >>>> + ? ? ? ? ? ? ? pr_err(\"twl6030: Failed to write CFG_INPUT_PUPD3, error %d\\n\",\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ret);\n" + "> >>>> + ? ? ? ? ? ? ? return ret;\n" + "> >>>> + ? ? ? }\n" + "> >>>> + ? ? ? return 0;\n" "> >>>> +}\n" "> >>>> +EXPORT_SYMBOL(twl6030_mmc_card_detect_config);\n" "> >>>> +\n" "> >>>> +int twl6030_mmc_card_detect(struct device *dev, int slot)\n" "> >>>> +{\n" - "> >>>> + \302\240 \302\240 \302\240 int ret = -EIO;\n" - "> >>>> + \302\240 \302\240 \302\240 u8 read_reg = 0;\n" - "> >>>> + \302\240 \302\240 \302\240 struct platform_device *pdev = to_platform_device(dev);\n" + "> >>>> + ? ? ? int ret = -EIO;\n" + "> >>>> + ? ? ? u8 read_reg = 0;\n" + "> >>>> + ? ? ? struct platform_device *pdev = to_platform_device(dev);\n" "> >>>> +\n" - "> >>>> + \302\240 \302\240 \302\240 if (pdev->id) {\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 /* TWL6030 provide's Card detect support for\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240* only MMC1 controller.\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240*/\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pr_err(\"Unkown MMC controller %d in %s\\n\", pdev->id, __func__);\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 return ret;\n" - "> >>>> + \302\240 \302\240 \302\240 }\n" - "> >>>> + \302\240 \302\240 \302\240 /*\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240* BIT0 of MMC_CTRL on TWL6030 provides card status for MMC1\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240* 0 - Card not present ,1 - Card present\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240*/\n" - "> >>>> + \302\240 \302\240 \302\240 ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, &read_reg,\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 TWL6030_MMCCTRL);\n" - "> >>>> + \302\240 \302\240 \302\240 if (ret >= 0)\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 ret = read_reg & STS_MMC;\n" - "> >>>> + \302\240 \302\240 \302\240 return ret;\n" + "> >>>> + ? ? ? if (pdev->id) {\n" + "> >>>> + ? ? ? ? ? ? ? /* TWL6030 provide's Card detect support for\n" + "> >>>> + ? ? ? ? ? ? ? ?* only MMC1 controller.\n" + "> >>>> + ? ? ? ? ? ? ? ?*/\n" + "> >>>> + ? ? ? ? ? ? ? pr_err(\"Unkown MMC controller %d in %s\\n\", pdev->id, __func__);\n" + "> >>>> + ? ? ? ? ? ? ? return ret;\n" + "> >>>> + ? ? ? }\n" + "> >>>> + ? ? ? /*\n" + "> >>>> + ? ? ? ?* BIT0 of MMC_CTRL on TWL6030 provides card status for MMC1\n" + "> >>>> + ? ? ? ?* 0 - Card not present ,1 - Card present\n" + "> >>>> + ? ? ? ?*/\n" + "> >>>> + ? ? ? ret = twl_i2c_read_u8(TWL6030_MODULE_ID0, &read_reg,\n" + "> >>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TWL6030_MMCCTRL);\n" + "> >>>> + ? ? ? if (ret >= 0)\n" + "> >>>> + ? ? ? ? ? ? ? ret = read_reg & STS_MMC;\n" + "> >>>> + ? ? ? return ret;\n" "> >>>> +}\n" "> >>>> +EXPORT_SYMBOL(twl6030_mmc_card_detect);\n" "> >>>> +\n" - "> >>>> \302\240int twl6030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end)\n" - "> >>>> \302\240{\n" + "> >>>> ?int twl6030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end)\n" + "> >>>> ?{\n" "> >>>>\n" "> >>>> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c\n" "> >>>> index 562dbbb..a51894d 100644\n" "> >>>> --- a/drivers/mmc/host/omap_hsmmc.c\n" "> >>>> +++ b/drivers/mmc/host/omap_hsmmc.c\n" "> >>>> @@ -466,8 +466,6 @@ static int omap_hsmmc_gpio_init(struct omap_mmc_platform_data *pdata)\n" - "> >>>> \302\240 \302\240 \302\240 \302\240int ret;\n" + "> >>>> ? ? ? ?int ret;\n" "> >>>>\n" - "> >>>> \302\240 \302\240 \302\240 \302\240if (gpio_is_valid(pdata->slots[0].switch_pin)) {\n" - "> >>>> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pdata->suspend = omap_hsmmc_suspend_cdirq;\n" - "> >>>> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pdata->resume = omap_hsmmc_resume_cdirq;\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (pdata->slots[0].cover)\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240pdata->slots[0].get_cover_state =\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240omap_hsmmc_get_cover_state;\n" + "> >>>> ? ? ? ?if (gpio_is_valid(pdata->slots[0].switch_pin)) {\n" + "> >>>> - ? ? ? ? ? ? ? pdata->suspend = omap_hsmmc_suspend_cdirq;\n" + "> >>>> - ? ? ? ? ? ? ? pdata->resume = omap_hsmmc_resume_cdirq;\n" + "> >>>> ? ? ? ? ? ? ? ?if (pdata->slots[0].cover)\n" + "> >>>> ? ? ? ? ? ? ? ? ? ? ? ?pdata->slots[0].get_cover_state =\n" + "> >>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?omap_hsmmc_get_cover_state;\n" "> >>>> @@ -2211,6 +2209,8 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\"Unable to grab MMC CD IRQ\\n\");\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240goto err_irq_cd;\n" - "> >>>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240}\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pdata->suspend = omap_hsmmc_suspend_cdirq;\n" - "> >>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 pdata->resume = omap_hsmmc_resume_cdirq;\n" - "> >>>> \302\240 \302\240 \302\240 \302\240}\n" + "> >>>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\"Unable to grab MMC CD IRQ\\n\");\n" + "> >>>> ? ? ? ? ? ? ? ? ? ? ? ?goto err_irq_cd;\n" + "> >>>> ? ? ? ? ? ? ? ?}\n" + "> >>>> + ? ? ? ? ? ? ? pdata->suspend = omap_hsmmc_suspend_cdirq;\n" + "> >>>> + ? ? ? ? ? ? ? pdata->resume = omap_hsmmc_resume_cdirq;\n" + "> >>>> ? ? ? ?}\n" "> >>>>\n" - "> >>>> \302\240 \302\240 \302\240 \302\240omap_hsmmc_disable_irq(host);\n" + "> >>>> ? ? ? ?omap_hsmmc_disable_irq(host);\n" "> >>>> diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h\n" "> >>>> index 6de90bf..e64894c 100644\n" "> >>>> --- a/include/linux/i2c/twl.h\n" "> >>>> +++ b/include/linux/i2c/twl.h\n" "> >>>> @@ -141,6 +141,16 @@\n" - "> >>>> \302\240#define TWL6030_CHARGER_CTRL_INT_MASK \302\2400x10\n" - "> >>>> \302\240#define TWL6030_CHARGER_FAULT_INT_MASK \302\240 \302\240 \302\240 \302\240 0x60\n" + "> >>>> ?#define TWL6030_CHARGER_CTRL_INT_MASK ?0x10\n" + "> >>>> ?#define TWL6030_CHARGER_FAULT_INT_MASK ? ? ? ? 0x60\n" "> >>>>\n" - "> >>>> +#define TWL6030_MMCCTRL \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\2400xEE\n" - "> >>>> +#define VMMC_AUTO_OFF \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240(0x1 << 3)\n" - "> >>>> +#define SW_FC \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240(0x1 << 2)\n" - "> >>>> +#define STS_MMC \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\2400x1\n" + "> >>>> +#define TWL6030_MMCCTRL ? ? ? ? ? ? ? ?0xEE\n" + "> >>>> +#define VMMC_AUTO_OFF ? ? ? ? ? ? ? ? ?(0x1 << 3)\n" + "> >>>> +#define SW_FC ? ? ? ? ? ? ? ? ? ? ? ? ?(0x1 << 2)\n" + "> >>>> +#define STS_MMC ? ? ? ? ? ? ? ? ? ? ? ?0x1\n" "> >>>> +\n" - "> >>>> +#define TWL6030_CFG_INPUT_PUPD3 \302\240 \302\240 \302\240 \302\2400xF2\n" - "> >>>> +#define MMC_PU \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 (0x1 << 3)\n" - "> >>>> +#define MMC_PD \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 (0x1 << 2)\n" + "> >>>> +#define TWL6030_CFG_INPUT_PUPD3 ? ? ? ?0xF2\n" + "> >>>> +#define MMC_PU ? ? ? ? ? ? ? ? ? ? ? ? (0x1 << 3)\n" + "> >>>> +#define MMC_PD ? ? ? ? ? ? ? ? ? ? ? ? (0x1 << 2)\n" "> >>>> +\n" "> >>>> +\n" "> >>>>\n" - "> >>>> \302\240#define TWL4030_CLASS_ID \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 0x4030\n" - "> >>>> \302\240#define TWL6030_CLASS_ID \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 0x6030\n" + "> >>>> ?#define TWL4030_CLASS_ID ? ? ? ? ? ? ? 0x4030\n" + "> >>>> ?#define TWL6030_CLASS_ID ? ? ? ? ? ? ? 0x6030\n" "> >>>> @@ -173,6 +183,27 @@ int twl_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes);\n" - "> >>>> \302\240int twl6030_interrupt_unmask(u8 bit_mask, u8 offset);\n" - "> >>>> \302\240int twl6030_interrupt_mask(u8 bit_mask, u8 offset);\n" + "> >>>> ?int twl6030_interrupt_unmask(u8 bit_mask, u8 offset);\n" + "> >>>> ?int twl6030_interrupt_mask(u8 bit_mask, u8 offset);\n" "> >>>>\n" "> >>>> +/* Card detect Configuration for MMC1 Controller on OMAP4 */\n" "> >>>> +#ifdef CONFIG_TWL4030_CORE\n" @@ -242,8 +235,8 @@ "> >>>> +#else\n" "> >>>> +static inline int twl6030_mmc_card_detect_config(void)\n" "> >>>> +{\n" - "> >>>> + \302\240 \302\240 \302\240 pr_debug(\"twl6030_mmc_card_detect_config not supported\\n\");\n" - "> >>>> + \302\240 \302\240 \302\240 return 0;\n" + "> >>>> + ? ? ? pr_debug(\"twl6030_mmc_card_detect_config not supported\\n\");\n" + "> >>>> + ? ? ? return 0;\n" "> >>>> +}\n" "> >>>> +#endif\n" "> >>>> +\n" @@ -253,21 +246,21 @@ "> >>>> +#else\n" "> >>>> +static inline int twl6030_mmc_card_detect(struct device *dev, int slot)\n" "> >>>> +{\n" - "> >>>> + \302\240 \302\240 \302\240 pr_debug(\"Call back twl6030_mmc_card_detect not supported\\n\");\n" - "> >>>> + \302\240 \302\240 \302\240 return -EIO;\n" + "> >>>> + ? ? ? pr_debug(\"Call back twl6030_mmc_card_detect not supported\\n\");\n" + "> >>>> + ? ? ? return -EIO;\n" "> >>>> +}\n" "> >>>> +#endif\n" - "> >>>> \302\240/*----------------------------------------------------------------------*/\n" + "> >>>> ?/*----------------------------------------------------------------------*/\n" "> >>>>\n" - "> >>>> \302\240/*\n" + "> >>>> ?/*\n" "> >>>> --\n" "> >>>> 1.7.0.4\n" "> >>>>\n" "> >>>>\n" "> >>>> --\n" "> >>>> To unsubscribe from this list: send the line \"unsubscribe linux-mmc\" in\n" - "> >>>> the body of a message to majordomo@vger.kernel.org\n" - "> >>>> More majordomo info at \302\240http://vger.kernel.org/majordomo-info.html\n" + "> >>>> the body of a message to majordomo at vger.kernel.org\n" + "> >>>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html\n" "> >>>>\n" "> >>>\n" "> >>\n" @@ -275,10 +268,6 @@ "\n" "-- \n" "Intel Open Source Technology Centre\n" - "http://oss.intel.com/\n" - "--\n" - "To unsubscribe from this list: send the line \"unsubscribe linux-omap\" in\n" - "the body of a message to majordomo@vger.kernel.org\n" - More majordomo info at http://vger.kernel.org/majordomo-info.html + http://oss.intel.com/ -0957f8da62b1f9b8f5470d7da774498738370d797296a4e7fa24120ee17cadf8 +252703f3b2f57a87d670fa1832902b409e086e996a123cb4429062abd1c489b3
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.