mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-29 04:52:22 -06:00
hw/sd/sdhci: Introduce a new Write Protected pin inverted property
The Write Protect pin of SDHCI model is default active low to match the SDHCI spec. So, write enable the bit 19 should be 1 and write protected the bit 19 should be 0 at the Present State Register (0x24). However, some boards are design Write Protected pin active high. In other words, write enable the bit 19 should be 0 and write protected the bit 19 should be 1 at the Present State Register (0x24). To support it, introduces a new "wp-inverted" property and set it false by default. Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Acked-by: Cédric Le Goater <clg@redhat.com> Acked-by: Philippe Mathieu-Daudé <philmd@linaro.org> Link: https://lore.kernel.org/r/20241114094839.4128404-3-jamin_lin@aspeedtech.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
8a139ae719
commit
134d9e5c0c
2 changed files with 11 additions and 0 deletions
|
@ -274,6 +274,10 @@ static void sdhci_set_readonly(DeviceState *dev, bool level)
|
||||||
{
|
{
|
||||||
SDHCIState *s = (SDHCIState *)dev;
|
SDHCIState *s = (SDHCIState *)dev;
|
||||||
|
|
||||||
|
if (s->wp_inverted) {
|
||||||
|
level = !level;
|
||||||
|
}
|
||||||
|
|
||||||
if (level) {
|
if (level) {
|
||||||
s->prnsts &= ~SDHC_WRITE_PROTECT;
|
s->prnsts &= ~SDHC_WRITE_PROTECT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1555,6 +1559,8 @@ static const Property sdhci_sysbus_properties[] = {
|
||||||
false),
|
false),
|
||||||
DEFINE_PROP_LINK("dma", SDHCIState,
|
DEFINE_PROP_LINK("dma", SDHCIState,
|
||||||
dma_mr, TYPE_MEMORY_REGION, MemoryRegion *),
|
dma_mr, TYPE_MEMORY_REGION, MemoryRegion *),
|
||||||
|
DEFINE_PROP_BOOL("wp-inverted", SDHCIState,
|
||||||
|
wp_inverted, false),
|
||||||
};
|
};
|
||||||
|
|
||||||
static void sdhci_sysbus_init(Object *obj)
|
static void sdhci_sysbus_init(Object *obj)
|
||||||
|
|
|
@ -100,6 +100,11 @@ struct SDHCIState {
|
||||||
uint8_t sd_spec_version;
|
uint8_t sd_spec_version;
|
||||||
uint8_t uhs_mode;
|
uint8_t uhs_mode;
|
||||||
uint8_t vendor; /* For vendor specific functionality */
|
uint8_t vendor; /* For vendor specific functionality */
|
||||||
|
/*
|
||||||
|
* Write Protect pin default active low for detecting SD card
|
||||||
|
* to be protected. Set wp_inverted to invert the signal.
|
||||||
|
*/
|
||||||
|
bool wp_inverted;
|
||||||
};
|
};
|
||||||
typedef struct SDHCIState SDHCIState;
|
typedef struct SDHCIState SDHCIState;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue