From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC,net-next] net: fixed_phy: Move the DT based link GPIO parsing to of_mdio.c From: mdf@kernel.org Message-Id: <20190206205106.11517-1-mdf@kernel.org> Date: Wed, 6 Feb 2019 12:51:06 -0800 To: linux-kernel@vger.kernel.org Cc: linux-usb@vger.kernel.org, netdev@vger.kernel.org, colin.king@canonical.com, linus.walleij@linaro.org, yuehaibing@huawei.com, mcgrof@kernel.org, frowand.list@gmail.com, robh+dt@kernel.org, UNGLinuxDriver@microchip.com, woojung.huh@microchip.com, hkallweit1@gmail.com, davem@davemloft.net, f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, moritz@ettus.com, alex.williams@ni.com, Moritz Fischer List-ID: TW92ZSB0aGUgRFQgYmFzZWQgbGluayBHUElPIHBhcnNpbmcgdG8gb2ZfbWRpbyBhbmQgbGV0IHRo ZSBwbGFjZXMKdGhhdCByZWdpc3RlciBhIGZpeGVkX3BoeSBwYXNzIGluIGEgR1BJTyBkZXNjcmlw dG9yIG9yIE5VTEwuCgpUaGlzIGFsbG93cyBmaXhlZF9waHkgb24gbm9uLURUIHBsYXRmb3JtcyB0 byBoYXZlIGxpbmsgR1BJT3MsIHRvby4KClNpZ25lZC1vZmYtYnk6IE1vcml0eiBGaXNjaGVyIDxt ZGZAa2VybmVsLm9yZz4KLS0tCiBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jICAg ICAgICB8ICAyICstCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWku YyB8ICAyICstCiBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMgICAgICAgICAgICAgICAgICB8 IDQ4ICsrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL29mL29mX21kaW8uYyAgICAgICAgICAgICAg ICAgICAgICAgICB8IDE1ICsrKysrLQogaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaCAgICAgICAg ICAgICAgICAgICAgfCAgMyArLQogNyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCA1 MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyBi L2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jCmluZGV4IDE3NDgyYWUwOWFhNS4uN2YxMjRjNjIw MDkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYworKysgYi9kcml2ZXJz L25ldC9kc2EvZHNhX2xvb3AuYwpAQCAtMzQzLDcgKzM0Myw3IEBAIHN0YXRpYyBpbnQgX19pbml0 IGRzYV9sb29wX2luaXQodm9pZCkKIAl1bnNpZ25lZCBpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkg PCBOVU1fRklYRURfUEhZUzsgaSsrKQotCQlwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVy KFBIWV9QT0xMLCAmc3RhdHVzLCBOVUxMKTsKKwkJcGh5ZGV2c1tpXSA9IGZpeGVkX3BoeV9yZWdp c3RlcihQSFlfUE9MTCwgJnN0YXR1cywgTlVMTCwgTlVMTCk7CiAKIAlyZXR1cm4gbWRpb19kcml2 ZXJfcmVnaXN0ZXIoJmRzYV9sb29wX2Rydik7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9l dGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20v YmdtYWMuYwppbmRleCA0NjMyZGQ1ZGJhZDEuLmJjZTY0NGRlYzVjMiAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYworKysgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9icm9hZGNvbS9iZ21hYy5jCkBAIC0xNDQ2LDcgKzE0NDYsNyBAQCBpbnQgYmdtYWNfcGh5 X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpCiAJc3RydWN0IHBoeV9kZXZpY2Ug KnBoeV9kZXY7CiAJaW50IGVycjsKIAotCXBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZ X1BPTEwsICZmcGh5X3N0YXR1cywgTlVMTCk7CisJcGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rl cihQSFlfUE9MTCwgJmZwaHlfc3RhdHVzLCBOVUxMLCBOVUxMKTsKIAlpZiAoIXBoeV9kZXYgfHwg SVNfRVJSKHBoeV9kZXYpKSB7CiAJCWRldl9lcnIoYmdtYWMtPmRldiwgIkZhaWxlZCB0byByZWdp c3RlciBmaXhlZCBQSFkgZGV2aWNlXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYyBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jCmluZGV4IDUxODgwZDgzMTMxYS4u N2NiZDczN2FiYTgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9n ZW5ldC9iY21taWkuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9i Y21taWkuYwpAQCAtNTI1LDcgKzUyNSw3IEBAIHN0YXRpYyBpbnQgYmNtZ2VuZXRfbWlpX3BkX2lu aXQoc3RydWN0IGJjbWdlbmV0X3ByaXYgKnByaXYpCiAJCQkuYXN5bV9wYXVzZSA9IDAsCiAJCX07 CiAKLQkJcGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFBIWV9QT0xMLCAmZnBoeV9zdGF0dXMs IE5VTEwpOworCQlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BPTEwsICZmcGh5X3N0 YXR1cywgTlVMTCwgTlVMTCk7CiAJCWlmICghcGh5ZGV2IHx8IElTX0VSUihwaHlkZXYpKSB7CiAJ CQlkZXZfZXJyKGtkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgZml4ZWQgUEhZIGRldmljZVxuIik7 CiAJCQlyZXR1cm4gLUVOT0RFVjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9maXhlZF9w aHkuYyBiL2RyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYwppbmRleCBkODEwZjkxNGFhYTQuLjg0 NWJkN2MyMDY1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jCisrKyBi L2RyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUg PGxpbnV4L2Vyci5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9v Zi5oPgorI2luY2x1ZGUgPGxpbnV4L29mX21kaW8uaD4KICNpbmNsdWRlIDxsaW51eC9ncGlvL2Nv bnN1bWVyLmg+CiAjaW5jbHVkZSA8bGludXgvc2VxbG9jay5oPgogI2luY2x1ZGUgPGxpbnV4L2lk ci5oPgpAQCAtMTkxLDUwICsxOTIsMTIgQEAgc3RhdGljIHZvaWQgZml4ZWRfcGh5X2RlbChpbnQg cGh5X2FkZHIpCiAJfQogfQogCi0jaWZkZWYgQ09ORklHX09GX0dQSU8KLXN0YXRpYyBzdHJ1Y3Qg Z3Bpb19kZXNjICpmaXhlZF9waHlfZ2V0X2dwaW9kKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCi17 Ci0Jc3RydWN0IGRldmljZV9ub2RlICpmaXhlZF9saW5rX25vZGU7Ci0Jc3RydWN0IGdwaW9fZGVz YyAqZ3Bpb2Q7Ci0KLQlpZiAoIW5wKQotCQlyZXR1cm4gTlVMTDsKLQotCWZpeGVkX2xpbmtfbm9k ZSA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCAiZml4ZWQtbGluayIpOwotCWlmICghZml4ZWRf bGlua19ub2RlKQotCQlyZXR1cm4gTlVMTDsKLQotCS8qCi0JICogQXMgdGhlIGZpeGVkIGxpbmsg aXMganVzdCBhIGRldmljZSB0cmVlIG5vZGUgd2l0aG91dCBhbnkKLQkgKiBMaW51eCBkZXZpY2Ug YXNzb2NpYXRlZCB3aXRoIGl0LCB3ZSBzaW1wbHkgaGF2ZSBvYnRhaW4KLQkgKiB0aGUgR1BJTyBk ZXNjcmlwdG9yIGZyb20gdGhlIGRldmljZSB0cmVlIGxpa2UgdGhpcy4KLQkgKi8KLQlncGlvZCA9 IGdwaW9kX2dldF9mcm9tX29mX25vZGUoZml4ZWRfbGlua19ub2RlLCAibGluay1ncGlvcyIsIDAs Ci0JCQkJICAgICAgIEdQSU9EX0lOLCAibWRpbyIpOwotCW9mX25vZGVfcHV0KGZpeGVkX2xpbmtf bm9kZSk7Ci0JaWYgKElTX0VSUihncGlvZCkpIHsKLQkJaWYgKFBUUl9FUlIoZ3Bpb2QpID09IC1F UFJPQkVfREVGRVIpCi0JCQlyZXR1cm4gZ3Bpb2Q7Ci0JCXByX2VycigiZXJyb3IgZ2V0dGluZyBH UElPIGZvciBmaXhlZCBsaW5rICVwT0YsIHByb2NlZWQgd2l0aG91dFxuIiwKLQkJICAgICAgIGZp eGVkX2xpbmtfbm9kZSk7Ci0JCWdwaW9kID0gTlVMTDsKLQl9Ci0KLQlyZXR1cm4gZ3Bpb2Q7Ci19 Ci0jZWxzZQotc3RhdGljIHN0cnVjdCBncGlvX2Rlc2MgKmZpeGVkX3BoeV9nZXRfZ3Bpb2Qoc3Ry dWN0IGRldmljZV9ub2RlICpucCkKLXsKLQlyZXR1cm4gTlVMTDsKLX0KLSNlbmRpZgotCiBzdHJ1 Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpcnEsCiAJCQkJ ICAgICAgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cywKLQkJCQkgICAgICBzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5wKQorCQkJCSAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCisJCQkJ ICAgICAgc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2QpCiB7CiAJc3RydWN0IGZpeGVkX21kaW9fYnVz ICpmbWIgPSAmcGxhdGZvcm1fZm1iOwotCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kID0gTlVMTDsK IAlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5OwogCWludCBwaHlfYWRkcjsKIAlpbnQgcmV0OwpAQCAt MjQyLDExICsyMDUsNiBAQCBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKHVu c2lnbmVkIGludCBpcnEsCiAJaWYgKCFmbWItPm1paV9idXMgfHwgZm1iLT5taWlfYnVzLT5zdGF0 ZSAhPSBNRElPQlVTX1JFR0lTVEVSRUQpCiAJCXJldHVybiBFUlJfUFRSKC1FUFJPQkVfREVGRVIp OwogCi0JLyogQ2hlY2sgaWYgd2UgaGF2ZSBhIEdQSU8gYXNzb2NpYXRlZCB3aXRoIHRoaXMgZml4 ZWQgcGh5ICovCi0JZ3Bpb2QgPSBmaXhlZF9waHlfZ2V0X2dwaW9kKG5wKTsKLQlpZiAoSVNfRVJS KGdwaW9kKSkKLQkJcmV0dXJuIEVSUl9DQVNUKGdwaW9kKTsKLQogCS8qIEdldCB0aGUgbmV4dCBh dmFpbGFibGUgUEhZIGFkZHJlc3MsIHVwIHRvIFBIWV9NQVhfQUREUiAqLwogCXBoeV9hZGRyID0g aWRhX3NpbXBsZV9nZXQoJnBoeV9maXhlZF9pZGEsIDAsIFBIWV9NQVhfQUREUiwgR0ZQX0tFUk5F TCk7CiAJaWYgKHBoeV9hZGRyIDwgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9sYW43 OHh4LmMgYi9kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jCmluZGV4IDNkOTJlYTZmY2MwMi4uYmQ4 OGYwYWVmMmZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jCisrKyBiL2Ry aXZlcnMvbmV0L3VzYi9sYW43OHh4LmMKQEAgLTIwNTEsNyArMjA1MSw3IEBAIHN0YXRpYyBzdHJ1 Y3QgcGh5X2RldmljZSAqbGFuNzgwMV9waHlfaW5pdChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldikK IAlwaHlkZXYgPSBwaHlfZmluZF9maXJzdChkZXYtPm1kaW9idXMpOwogCWlmICghcGh5ZGV2KSB7 CiAJCW5ldGRldl9kYmcoZGV2LT5uZXQsICJQSFkgTm90IEZvdW5kISEgUmVnaXN0ZXJpbmcgRml4 ZWQgUEhZXG4iKTsKLQkJcGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFBIWV9QT0xMLCAmZnBo eV9zdGF0dXMsIE5VTEwpOworCQlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BPTEws ICZmcGh5X3N0YXR1cywgTlVMTCwgTlVMTCk7CiAJCWlmIChJU19FUlIocGh5ZGV2KSkgewogCQkJ bmV0ZGV2X2VycihkZXYtPm5ldCwgIk5vIFBIWS9maXhlZF9QSFkgZm91bmRcbiIpOwogCQkJcmV0 dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL29mX21kaW8uYyBiL2RyaXZlcnMvb2Yv b2ZfbWRpby5jCmluZGV4IGRlNjE1NzM1N2UyNi4uNmJlMjEyMGI1ZjAzIDEwMDY0NAotLS0gYS9k cml2ZXJzL29mL29mX21kaW8uYworKysgYi9kcml2ZXJzL29mL29mX21kaW8uYwpAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L29mX21kaW8uaD4KICNpbmNsdWRlIDxsaW51eC9vZl9u ZXQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlvL2Nv bnN1bWVyLmg+CiAKICNkZWZpbmUgREVGQVVMVF9HUElPX1JFU0VUX0RFTEFZCTEwCS8qIGluIG1p Y3Jvc2Vjb25kcyAqLwogCkBAIC00NjAsNiArNDYxLDcgQEAgaW50IG9mX3BoeV9yZWdpc3Rlcl9m aXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiB7CiAJc3RydWN0IGZpeGVkX3BoeV9z dGF0dXMgc3RhdHVzID0ge307CiAJc3RydWN0IGRldmljZV9ub2RlICpmaXhlZF9saW5rX25vZGU7 CisJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2QgPSBOVUxMOwogCXUzMiBmaXhlZF9saW5rX3Byb3Bb NV07CiAJY29uc3QgY2hhciAqbWFuYWdlZDsKIApAQCAtNDgzLDcgKzQ4NSwxNyBAQCBpbnQgb2Zf cGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucCkKIAkJc3RhdHVz LnBhdXNlID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGZpeGVkX2xpbmtfbm9kZSwgInBhdXNlIik7 CiAJCXN0YXR1cy5hc3ltX3BhdXNlID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGZpeGVkX2xpbmtf bm9kZSwKIAkJCQkJCQkgICJhc3ltLXBhdXNlIik7CisKKwkJZ3Bpb2QgPSBncGlvZF9nZXRfZnJv bV9vZl9ub2RlKGZpeGVkX2xpbmtfbm9kZSwgImxpbmstZ3Bpb3MiLCAwLAorCQkJCSAgICAgICBH UElPRF9JTiwgIm1kaW8iKTsKIAkJb2Zfbm9kZV9wdXQoZml4ZWRfbGlua19ub2RlKTsKKwkJaWYg KElTX0VSUihncGlvZCkpIHsKKwkJCWlmIChQVFJfRVJSKGdwaW9kKSA9PSAtRVBST0JFX0RFRkVS KQorCQkJCXJldHVybiBQVFJfRVJSKGdwaW9kKTsKKwkJCXByX2VycigiZXJyb3IgZ2V0dGluZyBH UElPIGZvciBmaXhlZCBsaW5rICVwT0YsIHByb2NlZWQgd2l0aG91dFxuIiwKKwkJCSAgICAgICBm aXhlZF9saW5rX25vZGUpOworCQkJZ3Bpb2QgPSBOVUxMOworCQl9CiAKIAkJZ290byByZWdpc3Rl cl9waHk7CiAJfQpAQCAtNTAyLDcgKzUxNCw4IEBAIGludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRf bGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQogCXJldHVybiAtRU5PREVWOwogCiByZWdpc3Rl cl9waHk6Ci0JcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BP TEwsICZzdGF0dXMsIG5wKSk7CisJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhmaXhlZF9waHlfcmVn aXN0ZXIoUEhZX1BPTEwsICZzdGF0dXMsIG5wLAorCQkJICAgICAgIGdwaW9kKSk7CiB9CiBFWFBP UlRfU1lNQk9MKG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKTsKIApkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9waHlfZml4ZWQuaCBiL2luY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgKaW5kZXgg Yzc4ZmMyMDNkYjQzLi42OWNhYThjZGE3NjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGh5 X2ZpeGVkLmgKKysrIGIvaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaApAQCAtMTgsNyArMTgsOCBA QCBleHRlcm4gaW50IGZpeGVkX3BoeV9hZGQodW5zaWduZWQgaW50IGlycSwgaW50IHBoeV9pZCwK IAkJCSBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzKTsKIGV4dGVybiBzdHJ1Y3QgcGh5 X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpcnEsCiAJCQkJCSAgICAg c3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cywKLQkJCQkJICAgICBzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wKTsKKwkJCQkJICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAorCQkJCQkgICAg IHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kKTsKIGV4dGVybiB2b2lkIGZpeGVkX3BoeV91bnJlZ2lz dGVyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOwogZXh0ZXJuIGludCBmaXhlZF9waHlfc2V0 X2xpbmtfdXBkYXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsCiAJCQlpbnQgKCpsaW5rX3Vw ZGF0ZSkoc3RydWN0IG5ldF9kZXZpY2UgKiwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88F66C169C4 for ; Wed, 6 Feb 2019 21:03:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4B4B7218D9 for ; Wed, 6 Feb 2019 21:03:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1549486999; bh=9EGzBQcXdymF3USuX+1/r1ZBxBAhgN5/rZ8OPB9FnBY=; h=From:To:Cc:Subject:Date:List-ID:From; b=1V2GKi5vbYhwiUhsItgwMPOxOUpFnoLXqcdX+F5uOXaMvSFCLVYkN1eBlSa/tkrZm Ifzwy6pEptGM03/BloqmcAh6jD+vES6bQCp4dJ7cjsHGmOeOfqDZ5gDnf9nZRmz2kr CtXmW7/GElAwHqtJZPYmlEN1z3ohkk0icCK1ZnG4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726901AbfBFVDS (ORCPT ); Wed, 6 Feb 2019 16:03:18 -0500 Received: from mail-pl1-f193.google.com ([209.85.214.193]:43671 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726813AbfBFVDQ (ORCPT ); Wed, 6 Feb 2019 16:03:16 -0500 Received: by mail-pl1-f193.google.com with SMTP id gn14so3668522plb.10 for ; Wed, 06 Feb 2019 13:03:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ev5fQYjMQIDVraJaISLnDDGA67yPU0B4LX8c1VpAgsA=; b=kHJf9HrvqIh+41ByPoss+8Y54LHfBmoh+X38zCEc+fV4KwBzF0hMIQ/JqA95xbjzse rTTDPMIOTU3DVki4fbHES8j4n7im7q3GZnuvLJ2uzkuRP+9z1g1pe8kV/cG4iQQIdhRb JIjqw72nlm/gpHiaUPr4FwC/QBgMfHaEYpAItC4JPy3j+nVOO7vCHdLk6GU4Tu7CW9t2 jq1CNa7wvdXKQcSzJJVSntzquJVthvLVlpUWSYoN0SEG2p63cQgjqzpf3UFMhH9im4G5 sf3EO4BPCr8w25PVjZM1sqXPiRU6kRLYglXEmqk4UrmNGdyPhb2GHkcLGtM3g8QKETGv o64g== X-Gm-Message-State: AHQUAubBmCCiuWFlnMZb2/rj8QVDNfjuxnWPKfPPQ/l1dlNJtMvgwQuE pzomiLcFvxOIoaJooPkK76Yle2BdGg79Sw== X-Google-Smtp-Source: AHgI3IZYDu53/aarId4xjuLEwGl4OF30uoBlkKsuU4ibgMLuaqdzsGXnuuEAW5MGXF/KTzEemAih+g== X-Received: by 2002:a17:902:724a:: with SMTP id c10mr12974650pll.51.1549486995489; Wed, 06 Feb 2019 13:03:15 -0800 (PST) Received: from localhost ([207.114.172.147]) by smtp.gmail.com with ESMTPSA id h129sm13766888pfb.110.2019.02.06.13.03.14 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 06 Feb 2019 13:03:14 -0800 (PST) From: Moritz Fischer To: linux-kernel@vger.kernel.org Cc: linux-usb@vger.kernel.org, netdev@vger.kernel.org, colin.king@canonical.com, linus.walleij@linaro.org, yuehaibing@huawei.com, mcgrof@kernel.org, frowand.list@gmail.com, robh+dt@kernel.org, UNGLinuxDriver@microchip.com, woojung.huh@microchip.com, hkallweit1@gmail.com, davem@davemloft.net, f.fainelli@gmail.com, vivien.didelot@gmail.com, andrew@lunn.ch, moritz@ettus.com, alex.williams@ni.com, Moritz Fischer Subject: [RFC net-next] net: fixed_phy: Move the DT based link GPIO parsing to of_mdio.c Date: Wed, 6 Feb 2019 12:51:06 -0800 Message-Id: <20190206205106.11517-1-mdf@kernel.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Move the DT based link GPIO parsing to of_mdio and let the places that register a fixed_phy pass in a GPIO descriptor or NULL. This allows fixed_phy on non-DT platforms to have link GPIOs, too. Signed-off-by: Moritz Fischer --- drivers/net/dsa/dsa_loop.c | 2 +- drivers/net/ethernet/broadcom/bgmac.c | 2 +- drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 +- drivers/net/phy/fixed_phy.c | 48 ++------------------ drivers/net/usb/lan78xx.c | 2 +- drivers/of/of_mdio.c | 15 +++++- include/linux/phy_fixed.h | 3 +- 7 files changed, 23 insertions(+), 51 deletions(-) diff --git a/drivers/net/dsa/dsa_loop.c b/drivers/net/dsa/dsa_loop.c index 17482ae09aa5..7f124c620092 100644 --- a/drivers/net/dsa/dsa_loop.c +++ b/drivers/net/dsa/dsa_loop.c @@ -343,7 +343,7 @@ static int __init dsa_loop_init(void) unsigned int i; for (i = 0; i < NUM_FIXED_PHYS; i++) - phydevs[i] = fixed_phy_register(PHY_POLL, &status, NULL); + phydevs[i] = fixed_phy_register(PHY_POLL, &status, NULL, NULL); return mdio_driver_register(&dsa_loop_drv); } diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c index 4632dd5dbad1..bce644dec5c2 100644 --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c @@ -1446,7 +1446,7 @@ int bgmac_phy_connect_direct(struct bgmac *bgmac) struct phy_device *phy_dev; int err; - phy_dev = fixed_phy_register(PHY_POLL, &fphy_status, NULL); + phy_dev = fixed_phy_register(PHY_POLL, &fphy_status, NULL, NULL); if (!phy_dev || IS_ERR(phy_dev)) { dev_err(bgmac->dev, "Failed to register fixed PHY device\n"); return -ENODEV; diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c index 51880d83131a..7cbd737aba80 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -525,7 +525,7 @@ static int bcmgenet_mii_pd_init(struct bcmgenet_priv *priv) .asym_pause = 0, }; - phydev = fixed_phy_register(PHY_POLL, &fphy_status, NULL); + phydev = fixed_phy_register(PHY_POLL, &fphy_status, NULL, NULL); if (!phydev || IS_ERR(phydev)) { dev_err(kdev, "failed to register fixed PHY device\n"); return -ENODEV; diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c index d810f914aaa4..845bd7c2065a 100644 --- a/drivers/net/phy/fixed_phy.c +++ b/drivers/net/phy/fixed_phy.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -191,50 +192,12 @@ static void fixed_phy_del(int phy_addr) } } -#ifdef CONFIG_OF_GPIO -static struct gpio_desc *fixed_phy_get_gpiod(struct device_node *np) -{ - struct device_node *fixed_link_node; - struct gpio_desc *gpiod; - - if (!np) - return NULL; - - fixed_link_node = of_get_child_by_name(np, "fixed-link"); - if (!fixed_link_node) - return NULL; - - /* - * As the fixed link is just a device tree node without any - * Linux device associated with it, we simply have obtain - * the GPIO descriptor from the device tree like this. - */ - gpiod = gpiod_get_from_of_node(fixed_link_node, "link-gpios", 0, - GPIOD_IN, "mdio"); - of_node_put(fixed_link_node); - if (IS_ERR(gpiod)) { - if (PTR_ERR(gpiod) == -EPROBE_DEFER) - return gpiod; - pr_err("error getting GPIO for fixed link %pOF, proceed without\n", - fixed_link_node); - gpiod = NULL; - } - - return gpiod; -} -#else -static struct gpio_desc *fixed_phy_get_gpiod(struct device_node *np) -{ - return NULL; -} -#endif - struct phy_device *fixed_phy_register(unsigned int irq, struct fixed_phy_status *status, - struct device_node *np) + struct device_node *np, + struct gpio_desc *gpiod) { struct fixed_mdio_bus *fmb = &platform_fmb; - struct gpio_desc *gpiod = NULL; struct phy_device *phy; int phy_addr; int ret; @@ -242,11 +205,6 @@ struct phy_device *fixed_phy_register(unsigned int irq, if (!fmb->mii_bus || fmb->mii_bus->state != MDIOBUS_REGISTERED) return ERR_PTR(-EPROBE_DEFER); - /* Check if we have a GPIO associated with this fixed phy */ - gpiod = fixed_phy_get_gpiod(np); - if (IS_ERR(gpiod)) - return ERR_CAST(gpiod); - /* Get the next available PHY address, up to PHY_MAX_ADDR */ phy_addr = ida_simple_get(&phy_fixed_ida, 0, PHY_MAX_ADDR, GFP_KERNEL); if (phy_addr < 0) diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c index 3d92ea6fcc02..bd88f0aef2fa 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c @@ -2051,7 +2051,7 @@ static struct phy_device *lan7801_phy_init(struct lan78xx_net *dev) phydev = phy_find_first(dev->mdiobus); if (!phydev) { netdev_dbg(dev->net, "PHY Not Found!! Registering Fixed PHY\n"); - phydev = fixed_phy_register(PHY_POLL, &fphy_status, NULL); + phydev = fixed_phy_register(PHY_POLL, &fphy_status, NULL, NULL); if (IS_ERR(phydev)) { netdev_err(dev->net, "No PHY/fixed_PHY found\n"); return NULL; diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c index de6157357e26..6be2120b5f03 100644 --- a/drivers/of/of_mdio.c +++ b/drivers/of/of_mdio.c @@ -20,6 +20,7 @@ #include #include #include +#include #define DEFAULT_GPIO_RESET_DELAY 10 /* in microseconds */ @@ -460,6 +461,7 @@ int of_phy_register_fixed_link(struct device_node *np) { struct fixed_phy_status status = {}; struct device_node *fixed_link_node; + struct gpio_desc *gpiod = NULL; u32 fixed_link_prop[5]; const char *managed; @@ -483,7 +485,17 @@ int of_phy_register_fixed_link(struct device_node *np) status.pause = of_property_read_bool(fixed_link_node, "pause"); status.asym_pause = of_property_read_bool(fixed_link_node, "asym-pause"); + + gpiod = gpiod_get_from_of_node(fixed_link_node, "link-gpios", 0, + GPIOD_IN, "mdio"); of_node_put(fixed_link_node); + if (IS_ERR(gpiod)) { + if (PTR_ERR(gpiod) == -EPROBE_DEFER) + return PTR_ERR(gpiod); + pr_err("error getting GPIO for fixed link %pOF, proceed without\n", + fixed_link_node); + gpiod = NULL; + } goto register_phy; } @@ -502,7 +514,8 @@ int of_phy_register_fixed_link(struct device_node *np) return -ENODEV; register_phy: - return PTR_ERR_OR_ZERO(fixed_phy_register(PHY_POLL, &status, np)); + return PTR_ERR_OR_ZERO(fixed_phy_register(PHY_POLL, &status, np, + gpiod)); } EXPORT_SYMBOL(of_phy_register_fixed_link); diff --git a/include/linux/phy_fixed.h b/include/linux/phy_fixed.h index c78fc203db43..69caa8cda767 100644 --- a/include/linux/phy_fixed.h +++ b/include/linux/phy_fixed.h @@ -18,7 +18,8 @@ extern int fixed_phy_add(unsigned int irq, int phy_id, struct fixed_phy_status *status); extern struct phy_device *fixed_phy_register(unsigned int irq, struct fixed_phy_status *status, - struct device_node *np); + struct device_node *np, + struct gpio_desc *gpiod); extern void fixed_phy_unregister(struct phy_device *phydev); extern int fixed_phy_set_link_update(struct phy_device *phydev, int (*link_update)(struct net_device *, -- 2.20.1