[LEDE-DEV] [PATCH 1/2] apm821xx: detect sd-card media changes for the WNDR4700
Karl Palsson
karlp at tweak.net.au
Wed Aug 31 03:13:52 PDT 2016
Christian Lamparter <chunkeey at googlemail.com> wrote:
> The insertion or removal of the sd-card cannot be detected by
> the hardware itself. This is by design. To workaround this, for
> the WNDR4700 unload/load the dwc2 module in case the the
> special SD CARD GPIO line is low/high.
You want to bounce _all_ usb devices when the SD card is
inserted/removed? That sounds brutally intrusive! I've posted
before on the openwrt-devel list about the hard times I've had
with sd card detection before, also using a platform with a USB
card reader attached. Unless you can figure out how to get the in
kernel block detection working, (I could see it running scsi
probes, and getting responses changing when I inserted/removed
the SD card via usbmon, but couldn't it to reliably and stably
generate useful events [1]) or you run a userspace daemon, much
like udisks2 on gnome desktops, or something like
https://github.com/arduino/linino/tree/master/trunk/package/linino/uSDaemon
Even just the following works for detecting cards
inserted/removed. (It's rather more intrusive cpu wise than it
looks unfortunately, but at least it isn't bouncing the entire
USB system!) while true; do
block info > /dev/null
sleep 1; done
[1] I was working on 3.18, it's quite possible that the in kernel
block detection now works properly. see
/sys/block/sdXX/events_poll_msecs and try and hook events to
that.
Sincerely,
Karl P
>
> Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
> ---
> target/linux/apm821xx/base-files/etc/rc.button/BTN_1 | 19 +++++++++++++++++++
> target/linux/apm821xx/dts/wndr4700.dts | 2 +-
> 2 files changed, 20 insertions(+), 1 deletion(-)
> create mode 100755 target/linux/apm821xx/base-files/etc/rc.button/BTN_1
>
> diff --git
> a/target/linux/apm821xx/base-files/etc/rc.button/BTN_1
> b/target/linux/apm821xx/base-files/etc/rc.button/BTN_1 new file
> mode 100755 index 0000000..9956412
> --- /dev/null
> +++ b/target/linux/apm821xx/base-files/etc/rc.button/BTN_1
> @@ -0,0 +1,19 @@
> +#!/bin/sh
> +
> +. /lib/functions.sh
> +. /lib/apm821xx.sh
> +
> +BOARD=$(apm821xx_board_name)
> +
> +if [ $BOARD == "wndr4700" ]; then
> + case "$ACTION" in
> + released)
> + rmmod dwc2
> + ;;
> + pressed)
> + modprobe dwc2
> + ;;
> + esac
> +fi
> +
> +return 0
> diff --git a/target/linux/apm821xx/dts/wndr4700.dts
> b/target/linux/apm821xx/dts/wndr4700.dts index 9a2ceb9..caaf05b
> 100644
> --- a/target/linux/apm821xx/dts/wndr4700.dts
> +++ b/target/linux/apm821xx/dts/wndr4700.dts
> @@ -432,7 +432,7 @@
>
> sdcard {
> label = "SDCard inserted";
> - gpios = <&GPIO0 7 0>;
> + gpios = <&GPIO0 7 1>;
> linux,code = <0x101>; /* BTN_1 */
> };
> };
> --
> 2.9.3
>
>
> _______________________________________________
> Lede-dev mailing list
> Lede-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/lede-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP Digital Signature
URL: <http://lists.infradead.org/pipermail/lede-dev/attachments/20160831/31351cad/attachment.sig>
More information about the Lede-dev
mailing list