summaryrefslogtreecommitdiffstats
path: root/sys/dev/sdhci/sdhci.c
diff options
context:
space:
mode:
authorjchandra <jchandra@FreeBSD.org>2011-05-30 06:23:51 +0000
committerjchandra <jchandra@FreeBSD.org>2011-05-30 06:23:51 +0000
commit861907aeb2a72e77dcc62ead2385783cfd29f170 (patch)
treeb59618edfa1e2aca4e43a08e1267750f30b498ad /sys/dev/sdhci/sdhci.c
parent430ebf5dcf509df6b2222dddb06d283642ad2f28 (diff)
downloadFreeBSD-src-861907aeb2a72e77dcc62ead2385783cfd29f170.zip
FreeBSD-src-861907aeb2a72e77dcc62ead2385783cfd29f170.tar.gz
Fix read_ivar implementation for MMC and SD.
1. Both mmc_read_ivar() and sdhci_read_ivar() use the expression '*(int *)result = val' to assign to result which is uintptr_t *. This does not work on big-endian 64 bit systems. 2. The media_size ivar is declared as 'off_t' which does not fit into uintptr_t in 32bit systems, change this to long. Submitted by: kanthms at netlogicmicro com (initial version)
Diffstat (limited to 'sys/dev/sdhci/sdhci.c')
-rw-r--r--sys/dev/sdhci/sdhci.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/sys/dev/sdhci/sdhci.c b/sys/dev/sdhci/sdhci.c
index 6bbc25f..24cba57 100644
--- a/sys/dev/sdhci/sdhci.c
+++ b/sys/dev/sdhci/sdhci.c
@@ -1443,46 +1443,46 @@ sdhci_read_ivar(device_t bus, device_t child, int which, uintptr_t *result)
default:
return (EINVAL);
case MMCBR_IVAR_BUS_MODE:
- *(int *)result = slot->host.ios.bus_mode;
+ *result = slot->host.ios.bus_mode;
break;
case MMCBR_IVAR_BUS_WIDTH:
- *(int *)result = slot->host.ios.bus_width;
+ *result = slot->host.ios.bus_width;
break;
case MMCBR_IVAR_CHIP_SELECT:
- *(int *)result = slot->host.ios.chip_select;
+ *result = slot->host.ios.chip_select;
break;
case MMCBR_IVAR_CLOCK:
- *(int *)result = slot->host.ios.clock;
+ *result = slot->host.ios.clock;
break;
case MMCBR_IVAR_F_MIN:
- *(int *)result = slot->host.f_min;
+ *result = slot->host.f_min;
break;
case MMCBR_IVAR_F_MAX:
- *(int *)result = slot->host.f_max;
+ *result = slot->host.f_max;
break;
case MMCBR_IVAR_HOST_OCR:
- *(int *)result = slot->host.host_ocr;
+ *result = slot->host.host_ocr;
break;
case MMCBR_IVAR_MODE:
- *(int *)result = slot->host.mode;
+ *result = slot->host.mode;
break;
case MMCBR_IVAR_OCR:
- *(int *)result = slot->host.ocr;
+ *result = slot->host.ocr;
break;
case MMCBR_IVAR_POWER_MODE:
- *(int *)result = slot->host.ios.power_mode;
+ *result = slot->host.ios.power_mode;
break;
case MMCBR_IVAR_VDD:
- *(int *)result = slot->host.ios.vdd;
+ *result = slot->host.ios.vdd;
break;
case MMCBR_IVAR_CAPS:
- *(int *)result = slot->host.caps;
+ *result = slot->host.caps;
break;
case MMCBR_IVAR_TIMING:
- *(int *)result = slot->host.ios.timing;
+ *result = slot->host.ios.timing;
break;
case MMCBR_IVAR_MAX_DATA:
- *(int *)result = 65535;
+ *result = 65535;
break;
}
return (0);
OpenPOWER on IntegriCloud