diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2008-10-15 22:52:42 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2008-10-15 22:52:42 +0000 |
commit | f5b780c8e6be1e08df0e48d011d8ebe9a82e97e0 (patch) | |
tree | 8e41b15dcb0671329fd7b4153d4dc40eb631866f /nuttx/drivers/mmcsd/mmcsd_spi.c | |
parent | ec1e792ec8f6506571e9003b84992c4682004eb2 (diff) | |
download | px4-nuttx-f5b780c8e6be1e08df0e48d011d8ebe9a82e97e0.tar.gz px4-nuttx-f5b780c8e6be1e08df0e48d011d8ebe9a82e97e0.tar.bz2 px4-nuttx-f5b780c8e6be1e08df0e48d011d8ebe9a82e97e0.zip |
Need to clear mediachanged indication after it is sampled
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1049 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/drivers/mmcsd/mmcsd_spi.c')
-rw-r--r-- | nuttx/drivers/mmcsd/mmcsd_spi.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/nuttx/drivers/mmcsd/mmcsd_spi.c b/nuttx/drivers/mmcsd/mmcsd_spi.c index 537540536..2ca69bb05 100644 --- a/nuttx/drivers/mmcsd/mmcsd_spi.c +++ b/nuttx/drivers/mmcsd/mmcsd_spi.c @@ -1040,10 +1040,9 @@ static int mmcsd_geometry(FAR struct inode *inode, struct geometry *geometry) mmcsd_semtake(&slot->sem); ret = mmcsd_getcsd(slot, csd); - mmcsd_semgive(&slot->sem); - if (ret < 0) { + mmcsd_semgive(&slot->sem); fdbg("mmcsd_getcsd returned %d\n", ret); return ret; } @@ -1067,11 +1066,19 @@ static int mmcsd_geometry(FAR struct inode *inode, struct geometry *geometry) geometry->geo_nsectors = slot->nsectors; geometry->geo_sectorsize = slot->sectorsize; + /* After reporting mediachanged, clear the indication so that it is not + * reported again. + */ + + slot->state &= ~MMCSD_SLOTSTATUS_MEDIACHGD; + mmcsd_semgive(&slot->sem); + fvdbg("geo_available: %d\n", geometry->geo_available); fvdbg("geo_mediachanged: %d\n", geometry->geo_mediachanged); fvdbg("geo_writeenabled: %d\n", geometry->geo_writeenabled); fvdbg("geo_nsectors: %d\n", geometry->geo_nsectors); fvdbg("geo_sectorsize: %d\n", geometry->geo_sectorsize); + return OK; } |