Message ID | 20240628070216.92609-81-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | hw/sd/sdcard: Add eMMC support | expand |
On 6/28/24 9:01 AM, Philippe Mathieu-Daudé wrote: > In preparation of introducing eMMC support which have > different CSD/CID structures, introduce a pair of handlers > in SDCardClass. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Cédric Le Goater <clg@redhat.com> Thanks, C. > --- > include/hw/sd/sd.h | 2 ++ > hw/sd/sd.c | 7 +++++-- > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h > index c1a35ab420..0d6d9e452b 100644 > --- a/include/hw/sd/sd.h > +++ b/include/hw/sd/sd.h > @@ -127,6 +127,8 @@ struct SDCardClass { > void (*enable)(SDState *sd, bool enable); > bool (*get_inserted)(SDState *sd); > bool (*get_readonly)(SDState *sd); > + void (*set_cid)(SDState *sd); > + void (*set_csd)(SDState *sd, uint64_t size); > > const struct SDProto *proto; > }; > diff --git a/hw/sd/sd.c b/hw/sd/sd.c > index a0da06e017..b0ef252001 100644 > --- a/hw/sd/sd.c > +++ b/hw/sd/sd.c > @@ -671,6 +671,7 @@ static inline uint64_t sd_addr_to_wpnum(uint64_t addr) > static void sd_reset(DeviceState *dev) > { > SDState *sd = SD_CARD(dev); > + SDCardClass *sc = SD_CARD_GET_CLASS(sd); > uint64_t size; > uint64_t sect; > > @@ -691,8 +692,8 @@ static void sd_reset(DeviceState *dev) > sd->size = size; > sd_set_ocr(sd); > sd_set_scr(sd); > - sd_set_cid(sd); > - sd_set_csd(sd, size); > + sc->set_cid(sd); > + sc->set_csd(sd, size); > sd_set_cardstatus(sd); > sd_set_sdstatus(sd); > > @@ -2472,6 +2473,8 @@ static void sd_class_init(ObjectClass *klass, void *data) > sc->enable = sd_enable; > sc->get_inserted = sd_get_inserted; > sc->get_readonly = sd_get_readonly; > + sc->set_cid = sd_set_cid; > + sc->set_csd = sd_set_csd; > sc->proto = &sd_proto_sd; > } >
diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index c1a35ab420..0d6d9e452b 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -127,6 +127,8 @@ struct SDCardClass { void (*enable)(SDState *sd, bool enable); bool (*get_inserted)(SDState *sd); bool (*get_readonly)(SDState *sd); + void (*set_cid)(SDState *sd); + void (*set_csd)(SDState *sd, uint64_t size); const struct SDProto *proto; }; diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a0da06e017..b0ef252001 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -671,6 +671,7 @@ static inline uint64_t sd_addr_to_wpnum(uint64_t addr) static void sd_reset(DeviceState *dev) { SDState *sd = SD_CARD(dev); + SDCardClass *sc = SD_CARD_GET_CLASS(sd); uint64_t size; uint64_t sect; @@ -691,8 +692,8 @@ static void sd_reset(DeviceState *dev) sd->size = size; sd_set_ocr(sd); sd_set_scr(sd); - sd_set_cid(sd); - sd_set_csd(sd, size); + sc->set_cid(sd); + sc->set_csd(sd, size); sd_set_cardstatus(sd); sd_set_sdstatus(sd); @@ -2472,6 +2473,8 @@ static void sd_class_init(ObjectClass *klass, void *data) sc->enable = sd_enable; sc->get_inserted = sd_get_inserted; sc->get_readonly = sd_get_readonly; + sc->set_cid = sd_set_cid; + sc->set_csd = sd_set_csd; sc->proto = &sd_proto_sd; }
In preparation of introducing eMMC support which have different CSD/CID structures, introduce a pair of handlers in SDCardClass. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- include/hw/sd/sd.h | 2 ++ hw/sd/sd.c | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-)