quoted
+
+static int __init brownstone_init_mmc(void)
+{
+ ? ? ?/*
+ ? ? ? * PDn: GPIO58; RESETn: GPIO57
+ ? ? ? * 8787, RESETn keeps high, PDn control power
+ ? ? ? * on: PDn 1; off: PDn 0;
+ ? ? ? */
Comment unclear
GPIO57 is power
GPIO58 is reset
yes, typo, thanks
quoted
+ ? ? ?int RESETn = mfp_to_gpio(MFP_PIN_GPIO58);
+
+ ? ? ?if (gpio_request(RESETn, "sdio RESETn")) {
+ ? ? ? ? ? ? ?pr_err("Failed to request sdio RESETn gpio\n");
+ ? ? ? ? ? ? ?return -EIO;
+ ? ? ?}
+ ? ? ?gpio_direction_output(RESETn, 1);
+ ? ? ?gpio_free(RESETn);
The 8787 ?data sheet indicated that PDn should be inactive as well as reset before
initiating power up.
Pull PDn high.
The PDn is super-set of RESETn, keep RESETn high, and control 8787
with PDn is enough.
The "Internal Reset" in data sheet is not RESET pin.