Author: imp
Date: Thu Jul  4 14:15:04 2019
New Revision: 349728
URL: https://svnweb.freebsd.org/changeset/base/349728

Log:
  Implement missing MMCBR ivars
  
  All MMCBR bridges have to implement all the MMCBR variables. This
  implements them for everybody that currently doesn't.
  
  A common routine for this should be written.

Modified:
  head/sys/arm/amlogic/aml8726/aml8726_mmc.c
  head/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c
  head/sys/dev/mmc/host/dwmmc.c
  head/sys/mips/ingenic/jz4780_mmc.c

Modified: head/sys/arm/amlogic/aml8726/aml8726_mmc.c
==============================================================================
--- head/sys/arm/amlogic/aml8726/aml8726_mmc.c  Thu Jul  4 14:04:08 2019        
(r349727)
+++ head/sys/arm/amlogic/aml8726/aml8726_mmc.c  Thu Jul  4 14:15:04 2019        
(r349728)
@@ -965,15 +965,26 @@ aml8726_mmc_read_ivar(device_t bus, device_t child,
        case MMCBR_IVAR_POWER_MODE:
                *(int *)result = sc->host.ios.power_mode;
                break;
+       case MMCBR_IVAR_RETUNE_REQ:
+               *(int *)result = return_req_none;
        case MMCBR_IVAR_VDD:
                *(int *)result = sc->host.ios.vdd;
                break;
+       case MMCBR_IVAR_VCCQ:
+               *result = sc->sc_host.ios.vccq;
+               break;
        case MMCBR_IVAR_CAPS:
                *(int *)result = sc->host.caps;
                break;
+       case MMCBR_IVAR_TIMING:
+               *(int *)result = sc->sc_host.ios.timing;
+               break;
        case MMCBR_IVAR_MAX_DATA:
                *(int *)result = AML_MMC_MAX_DMA / MMC_SECTOR_SIZE;
                break;
+       case MMCBR_IVAR_MAX_BUSY_TIMEOUT:
+               *(int *)result = 1000000;       /* 1s max */
+               break;
        default:
                return (EINVAL);
        }
@@ -1011,6 +1022,12 @@ aml8726_mmc_write_ivar(device_t bus, device_t child,
                break;
        case MMCBR_IVAR_VDD:
                sc->host.ios.vdd = value;
+               break;
+       case MMCBR_IVAR_VCCQ:
+               sc->sc_host.ios.vccq = value;
+               break;
+       case MMCBR_IVAR_TIMING:
+               sc->sc_host.ios.timing = value;
                break;
        /* These are read-only */
        case MMCBR_IVAR_CAPS:

Modified: head/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c
==============================================================================
--- head/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c      Thu Jul  4 14:04:08 
2019        (r349727)
+++ head/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c      Thu Jul  4 14:15:04 
2019        (r349728)
@@ -1245,15 +1245,27 @@ aml8726_sdxc_read_ivar(device_t bus, device_t child,
        case MMCBR_IVAR_POWER_MODE:
                *(int *)result = sc->host.ios.power_mode;
                break;
+       case MMCBR_IVAR_RETUNE_REQ:
+               *(int *)result = return_req_none;
+               break;
        case MMCBR_IVAR_VDD:
                *(int *)result = sc->host.ios.vdd;
                break;
+       case MMCBR_IVAR_VCCQ:
+               *result = sc->host.ios.vccq;
+               break;
        case MMCBR_IVAR_CAPS:
                *(int *)result = sc->host.caps;
                break;
+       case MMCBR_IVAR_TIMING:
+               *(int *)result = sc->host.ios.timing;
+               break;
        case MMCBR_IVAR_MAX_DATA:
                *(int *)result = AML_SDXC_MAX_DMA / MMC_SECTOR_SIZE;
                break;
+       case MMCBR_IVAR_MAX_BUSY_TIMEOUT:
+               *(int *)result = 1000000;       /* 1s max */
+               break;
        default:
                return (EINVAL);
        }
@@ -1291,6 +1303,12 @@ aml8726_sdxc_write_ivar(device_t bus, device_t child,
                break;
        case MMCBR_IVAR_VDD:
                sc->host.ios.vdd = value;
+               break;
+       case MMCBR_IVAR_VCCQ:
+               sc->host.ios.vccq = value;
+               break;
+       case MMCBR_IVAR_TIMING:
+               sc->host.ios.timing = value;
                break;
        /* These are read-only */
        case MMCBR_IVAR_CAPS:

Modified: head/sys/dev/mmc/host/dwmmc.c
==============================================================================
--- head/sys/dev/mmc/host/dwmmc.c       Thu Jul  4 14:04:08 2019        
(r349727)
+++ head/sys/dev/mmc/host/dwmmc.c       Thu Jul  4 14:15:04 2019        
(r349728)
@@ -1091,6 +1091,9 @@ dwmmc_read_ivar(device_t bus, device_t child, int whic
        case MMCBR_IVAR_VDD:
                *(int *)result = sc->host.ios.vdd;
                break;
+       case MMCBR_IVAR_VCCQ:
+               *(int *)result = sc->host.ios.vccq;
+               break;
        case MMCBR_IVAR_CAPS:
                *(int *)result = sc->host.caps;
                break;
@@ -1141,10 +1144,8 @@ dwmmc_write_ivar(device_t bus, device_t child, int whi
        case MMCBR_IVAR_TIMING:
                sc->host.ios.timing = value;
                break;
-
-       /* Not handled */
        case MMCBR_IVAR_VCCQ:
-               return (0);
+               sc->sc_host.ios.vccq = value;
                break;
        /* These are read-only */
        case MMCBR_IVAR_CAPS:

Modified: head/sys/mips/ingenic/jz4780_mmc.c
==============================================================================
--- head/sys/mips/ingenic/jz4780_mmc.c  Thu Jul  4 14:04:08 2019        
(r349727)
+++ head/sys/mips/ingenic/jz4780_mmc.c  Thu Jul  4 14:15:04 2019        
(r349728)
@@ -774,17 +774,26 @@ jz4780_mmc_read_ivar(device_t bus, device_t child, int
        case MMCBR_IVAR_POWER_MODE:
                *(int *)result = sc->sc_host.ios.power_mode;
                break;
+       case MMCBR_IVAR_RETUNE_REQ:
+               *(int *)result = return_req_none;
+               break;
        case MMCBR_IVAR_VDD:
                *(int *)result = sc->sc_host.ios.vdd;
                break;
+       case MMCBR_IVAR_VCCQ:
+               *result = sc->sc_host.ios.vccq;
+               break;
        case MMCBR_IVAR_CAPS:
                *(int *)result = sc->sc_host.caps;
                break;
+       case MMCBR_IVAR_TIMING:
+               *(int *)result = sc->sc_host.ios.timing;
+               break;
        case MMCBR_IVAR_MAX_DATA:
                *(int *)result = 65535;
                break;
-       case MMCBR_IVAR_TIMING:
-               *(int *)result = sc->sc_host.ios.timing;
+       case MMCBR_IVAR_MAX_BUSY_TIMEOUT:
+               *(int *)result = 1000000;       /* 1s max */
                break;
        }
 
@@ -824,6 +833,9 @@ jz4780_mmc_write_ivar(device_t bus, device_t child, in
                break;
        case MMCBR_IVAR_VDD:
                sc->sc_host.ios.vdd = value;
+               break;
+       case MMCBR_IVAR_VCCQ:
+               sc->sc_host.ios.vccq = value;
                break;
        case MMCBR_IVAR_TIMING:
                sc->sc_host.ios.timing = value;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to