[AT&T, Rogers HTC One X, Telstra One XL] E:V:A:
Any place you care to share your modification at? (Pasebin could be fine too...)

Anyway, we'll probably need to figure out how to reset the eMMC using either a different GPIO or another way. So I have been looking in the Evita-ics sources and trying to compare to the reference schematic. My very preliminary conclusions are the following:

We have three options for resetting eMMC:

1) Issue the normal RESET_N signal to eMMC.

2) Shut down power-rail to eMMC.

3) Send some monkey-business signals to the SDC1's CLK and/or CMD lines.

(1) The easiest option would be to be able to to issue a normal eMMC reset, using the RESET_N signal directly from MSM. What is not clear to me, is whether or not this signal is utilizing the GPIO or I2C or both or none!? I think both because of the findings below.

According to the reference schematics, the eMMC is wired to MSM as follows.

MSM:C31 RESOUT_N ==> eMMC:U5(RST)
MSM:AK31 SDC1_CLK ==> eMMC:W6(CLK)
MSM:AL31 SDC1_CMD ==> eMMC:W5(CMD)

The additional active I2C device drivers (I did not know before) are:

[SIZE=2]dummy Dummy!?
ir-kbd-i2c keyboard input driver for i2c IR remote controls
sx150x Driver for Semtech SX150X I2C GPIO Expanders
tabla-i2c-core CDC_RESET
[/SIZE]

The interesting part is that I believe that the I2C labelled "tabla-i2c-core", is attached to GPIO #185 which is called CDC_RESET.

[SIZE=2]gpio-185 (CDC_RESET ) out hi 0x05 0x19 0x2a 0x38 0x40 0x58
[/SIZE]

This appears a little bit here and there in the source,

but I think the relevant ones are in one of these:

[SIZE=2]./drivers/mfd/wcd9310-core.c:275: ret = gpio_request(tabla->reset_gpio, "CDC_RESET");
./include/linux/cdrom.h:381: #define CDC_RESET 0x200 /* hard reset device */
./drivers/cdrom/cdrom.c:419: ENSURE(reset, CDC_RESET);
[/SIZE]

Now, its funny they even have references to a CDROM... It just doesn't make any sense. But I suppose in write protection, it might just act like one.

(2) Second we could try to shut down the power-rail for the eMMC. According to the reference schematics, the eMMC is wired to, and gets its power from PMIC as follows.

VREG_S4_1P8 PMIC:U14 (VREG_S4)[U13:V13]
VREG_L5_2P95 PMIC:H1

Here I remain clueless as to how one would manipulate the PMIC 8921 registers to do that. But I think it may be closely related to this code :

(This is not only from the evita-ics kernel blob, but in CodeAurora repository.)

[SIZE=2]board-8960-regulator.c:

VREG_CONSUMERS(L5) = {
REGULATOR_SUPPLY("8921_l5", NULL),
[COLOR=Red]REGULATOR_SUPPLY("sdc_vdd", "msm_sdcc.1"),[/COLOR]
};

VREG_CONSUMERS(S4) = {
REGULATOR_SUPPLY("8921_s4", NULL),
[COLOR=Red]REGULATOR_SUPPLY("sdc_vccq", "msm_sdcc.1"),[/COLOR]
REGULATOR_SUPPLY("riva_vddpx", "wcnss_wlan.0"),
REGULATOR_SUPPLY("hdmi_vcc", "hdmi_msm.0"),
REGULATOR_SUPPLY("VDDIO_CDC", "tabla-slim"),
REGULATOR_SUPPLY("CDC_VDD_CP", "tabla-slim"),
REGULATOR_SUPPLY("CDC_VDDA_TX", "tabla-slim"),
REGULATOR_SUPPLY("CDC_VDDA_RX", "tabla-slim"),
REGULATOR_SUPPLY("VDDIO_CDC", "tabla2x-slim"),
REGULATOR_SUPPLY("CDC_VDD_CP", "tabla2x-slim"),
REGULATOR_SUPPLY("CDC_VDDA_TX", "tabla2x-slim"),
REGULATOR_SUPPLY("CDC_VDDA_RX", "tabla2x-slim"),
REGULATOR_SUPPLY("vcc_i2c", "3-005b"),
REGULATOR_SUPPLY("EXT_HUB_VDDIO", "msm_hsic_host"),
REGULATOR_SUPPLY("vcc_i2c", "10-0048"),
};

./arch/arm/mach-msm/board-elite-regulator.c:49: REGULATOR_SUPPLY("sdc_vdd","msm_sdcc.1"),
./arch/arm/mach-msm/board-elite.c:5524: #define CYTTSP_TS_RESOUT_N_GPIO 52

./arch/arm/mach-msm/board-elite.h:62:#define ELITE_GPIO_RESOUTz_CONTROL (11)
./arch/arm/mach-msm/board-elite.h-63-#define ELITE_GPIO_VP_I2C_DAT (12)
./arch/arm/mach-msm/board-elite.h-64-#define ELITE_GPIO_VP_I2C_CLK (13)
[/SIZE]

(3) As for playing with the eMMC lines, I have no idea! But from above, we should find the CMD/CLK/DAT

(assuming DAT=CMD) lines on the GPIO as well...

But there are several ones to choose. (How about 12 and 13)?