[Samsung Epic 4G Touch] garwynn:
Another one (question) bites the dust...

We both were - then you hinted at it here:

Took a little digging - and I'm still not exactly sure what revision it was introduced - but JEDEC didn't introduce eMMC specifications until version 4. Here's the documentation that I found:

http://rere.qmqm.pl/~mirq/JESD84-A44.pdf

Note: Current specification is 4.5 as of 2011.

OK, so we know the revision to use. Now let's see about those two fields. Inside mmc.c again:

static int mmc_decode_cid(struct mmc_card *card)
{
u32 *resp = card->raw_cid;

/*
* The selection of the format here is based upon published
* specs from sandisk and from what people have reported.
*/
switch (card->csd.mmca_vsn) {
case 0: /* MMC v1.0 - v1.2 */
case 1: /* MMC v1.4 */
card->cid.manfid = UNSTUFF_BITS(resp, 104, 24);
card->cid.prod_name[0] = UNSTUFF_BITS(resp, 96, 8);
card->cid.prod_name[1] = UNSTUFF_BITS(resp, 88, 8);
card->cid.prod_name[2] = UNSTUFF_BITS(resp, 80, 8);
card->cid.prod_name[3] = UNSTUFF_BITS(resp, 72, 8);
card->cid.prod_name[4] = UNSTUFF_BITS(resp, 64, 8);
card->cid.prod_name[5] = UNSTUFF_BITS(resp, 56, 8);
card->cid.prod_name[6] = UNSTUFF_BITS(resp, 48, 8);
card->cid.hwrev = UNSTUFF_BITS(resp, 44, 4);
card->cid.fwrev = UNSTUFF_BITS(resp, 40, 4);
card->cid.serial = UNSTUFF_BITS(resp, 16, 24);
card->cid.month = UNSTUFF_BITS(resp, 12, 4);
card->cid.year = UNSTUFF_BITS(resp, 8, 4) + 1997;
break;

case 2: /* MMC v2.0 - v2.2 */
case 3: /* MMC v3.1 - v3.3 */
[B]case 4: /* MMC v4 */ [I] (Our Case!)[/I]
card->cid.manfid = UNSTUFF_BITS(resp, 120, 8);
card->cid.oemid = UNSTUFF_BITS(resp, 104, 16);
card->cid.prod_name[0] = UNSTUFF_BITS(resp, 96, 8);
card->cid.prod_name[1] = UNSTUFF_BITS(resp, 88, 8);
card->cid.prod_name[2] = UNSTUFF_BITS(resp, 80, 8);
card->cid.prod_name[3] = UNSTUFF_BITS(resp, 72, 8);
card->cid.prod_name[4] = UNSTUFF_BITS(resp, 64, 8);
card->cid.prod_name[5] = UNSTUFF_BITS(resp, 56, 8);
card->cid.serial = UNSTUFF_BITS(resp, 16, 32);
card->cid.month = UNSTUFF_BITS(resp, 12, 4);
card->cid.year = UNSTUFF_BITS(resp, 8, 4) + 1997;
break;[/B]

default:
printk(KERN_ERR "%s: card has unknown MMCA version %d\n",
mmc_hostname(card->host), card->csd.mmca_vsn);
return -EINVAL;
}

return 0;
}

So regardless what they use there we don't have a value stored here for our eMMCs. That's why we have 0x0 and why it doesn't matter what they added in the logic - at least in our case. It's possible that older SD cards and MMCs (Sammy makes these as well) might be affected and they may use this - but I'm not going to spend too much time on it now that we can exclude it for our discussion.

---------- Post added at 04:11 PM ---------- Previous post was at 04:00 PM ----------

Being a Windows guy before my current job I was in the "AS/400 is old and antiquated" category. But then I got here and I've learned a lot about it. While IBM i/OS (formerly OS/400, i 5/OS, etc.) is proprietary the hardware can also run Linux and AIX - we're starting to use Linux and don't believe we're using AIX.

It's actually quite impressive what they have done in the past 2 versions alone - IBM is finally embracing new technology a lot more with the new versions. But unless companies encourage their employees to dig into the enhancements they'll be stuck thinking it's the same as it was 10-15 years ago, just bigger and faster. We're doing things I don't think most people even knew were possible - and hopefully more soon. (Hoping to start working on web service providing soon)

The O/S has a "Qshell" which basically gives you a Unix-style terminal interface. I also know that the DB2 file systems have some similarities to extX - I have been looking at it for a while as there are ways to search the "metadata" (Linux calls this inode data) for possible new solutions.

OK, enough of the OT talk, will get back to coding (work) and trying to answer our questions.