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: Andrew Lunn Message-Id: <20190206215322.GC32483@lunn.ch> Date: Wed, 6 Feb 2019 22:53:22 +0100 To: Moritz Fischer Cc: linux-kernel@vger.kernel.org, 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, moritz@ettus.com, alex.williams@ni.com List-ID: T24gV2VkLCBGZWIgMDYsIDIwMTkgYXQgMTI6NTE6MDZQTSAtMDgwMCwgTW9yaXR6IEZpc2NoZXIg d3JvdGU6Cj4gTW92ZSB0aGUgRFQgYmFzZWQgbGluayBHUElPIHBhcnNpbmcgdG8gb2ZfbWRpbyBh bmQgbGV0IHRoZSBwbGFjZXMKPiB0aGF0IHJlZ2lzdGVyIGEgZml4ZWRfcGh5IHBhc3MgaW4gYSBH UElPIGRlc2NyaXB0b3Igb3IgTlVMTC4KPiAKPiBUaGlzIGFsbG93cyBmaXhlZF9waHkgb24gbm9u LURUIHBsYXRmb3JtcyB0byBoYXZlIGxpbmsgR1BJT3MsIHRvby4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBNb3JpdHogRmlzY2hlciA8bWRmQGtlcm5lbC5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvbmV0L2Rz YS9kc2FfbG9vcC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiAgZHJpdmVycy9uZXQvZXRo ZXJuZXQvYnJvYWRjb20vYmdtYWMuYyAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL25ldC9ldGhl cm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYyB8ICAyICstCj4gIGRyaXZlcnMvbmV0L3BoeS9m aXhlZF9waHkuYyAgICAgICAgICAgICAgICAgIHwgNDggKystLS0tLS0tLS0tLS0tLS0tLS0KPiAg ZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQo+ICBk cml2ZXJzL29mL29mX21kaW8uYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrLQo+ ICBpbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oICAgICAgICAgICAgICAgICAgICB8ICAzICstCj4g IDcgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jIGIvZHJpdmVycy9uZXQvZHNh L2RzYV9sb29wLmMKPiBpbmRleCAxNzQ4MmFlMDlhYTUuLjdmMTI0YzYyMDA5MiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYwo+ICsrKyBiL2RyaXZlcnMvbmV0L2RzYS9k c2FfbG9vcC5jCj4gQEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9v cF9pbml0KHZvaWQpCj4gIAl1bnNpZ25lZCBpbnQgaTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwg TlVNX0ZJWEVEX1BIWVM7IGkrKykKPiAtCQlwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVy KFBIWV9QT0xMLCAmc3RhdHVzLCBOVUxMKTsKPiArCQlwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3Jl Z2lzdGVyKFBIWV9QT0xMLCAmc3RhdHVzLCBOVUxMLCBOVUxMKTsKPiAgCj4gIAlyZXR1cm4gbWRp b19kcml2ZXJfcmVnaXN0ZXIoJmRzYV9sb29wX2Rydik7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L2Jyb2FkY29tL2JnbWFjLmMKPiBpbmRleCA0NjMyZGQ1ZGJhZDEuLmJjZTY0NGRlYzVjMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jCj4gKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYwo+IEBAIC0xNDQ2LDcgKzE0NDYs NyBAQCBpbnQgYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpCj4g IAlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5X2RldjsKPiAgCWludCBlcnI7Cj4gIAo+IC0JcGh5X2Rl diA9IGZpeGVkX3BoeV9yZWdpc3RlcihQSFlfUE9MTCwgJmZwaHlfc3RhdHVzLCBOVUxMKTsKPiAr CXBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BPTEwsICZmcGh5X3N0YXR1cywgTlVM TCwgTlVMTCk7Cj4gIAlpZiAoIXBoeV9kZXYgfHwgSVNfRVJSKHBoeV9kZXYpKSB7Cj4gIAkJZGV2 X2VycihiZ21hYy0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGZpeGVkIFBIWSBkZXZpY2VcbiIp Owo+ICAJCXJldHVybiAtRU5PREVWOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9icm9hZGNvbS9nZW5ldC9iY21taWkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29t L2dlbmV0L2JjbW1paS5jCj4gaW5kZXggNTE4ODBkODMxMzFhLi43Y2JkNzM3YWJhODAgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMKPiAr KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYwo+IEBAIC01 MjUsNyArNTI1LDcgQEAgc3RhdGljIGludCBiY21nZW5ldF9taWlfcGRfaW5pdChzdHJ1Y3QgYmNt Z2VuZXRfcHJpdiAqcHJpdikKPiAgCQkJLmFzeW1fcGF1c2UgPSAwLAo+ICAJCX07Cj4gIAo+IC0J CXBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihQSFlfUE9MTCwgJmZwaHlfc3RhdHVzLCBOVUxM KTsKPiArCQlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZX1BPTEwsICZmcGh5X3N0YXR1 cywgTlVMTCwgTlVMTCk7Cj4gIAkJaWYgKCFwaHlkZXYgfHwgSVNfRVJSKHBoeWRldikpIHsKPiAg CQkJZGV2X2VycihrZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIGZpeGVkIFBIWSBkZXZpY2VcbiIp Owo+ICAJCQlyZXR1cm4gLUVOT0RFVjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2Zp eGVkX3BoeS5jIGIvZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jCj4gaW5kZXggZDgxMGY5MTRh YWE0Li44NDViZDdjMjA2NWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3Bo eS5jCj4gKysrIGIvZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jCj4gQEAgLTE4LDYgKzE4LDcg QEAKPiAgI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ ICAjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX21kaW8uaD4KPiAg I2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3NlcWxv Y2suaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2lkci5oPgo+IEBAIC0xOTEsNTAgKzE5MiwxMiBAQCBz dGF0aWMgdm9pZCBmaXhlZF9waHlfZGVsKGludCBwaHlfYWRkcikKPiAgCX0KPiAgfQo+ICAKPiAt I2lmZGVmIENPTkZJR19PRl9HUElPCj4gLXN0YXRpYyBzdHJ1Y3QgZ3Bpb19kZXNjICpmaXhlZF9w aHlfZ2V0X2dwaW9kKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gLXsKPiAtCXN0cnVjdCBkZXZp Y2Vfbm9kZSAqZml4ZWRfbGlua19ub2RlOwo+IC0Jc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2Q7Cj4g LQo+IC0JaWYgKCFucCkKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCj4gLQlmaXhlZF9saW5rX25vZGUg PSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgImZpeGVkLWxpbmsiKTsKPiAtCWlmICghZml4ZWRf bGlua19ub2RlKQo+IC0JCXJldHVybiBOVUxMOwo+IC0KPiAtCS8qCj4gLQkgKiBBcyB0aGUgZml4 ZWQgbGluayBpcyBqdXN0IGEgZGV2aWNlIHRyZWUgbm9kZSB3aXRob3V0IGFueQo+IC0JICogTGlu dXggZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgd2Ugc2ltcGx5IGhhdmUgb2J0YWluCj4gLQkg KiB0aGUgR1BJTyBkZXNjcmlwdG9yIGZyb20gdGhlIGRldmljZSB0cmVlIGxpa2UgdGhpcy4KPiAt CSAqLwo+IC0JZ3Bpb2QgPSBncGlvZF9nZXRfZnJvbV9vZl9ub2RlKGZpeGVkX2xpbmtfbm9kZSwg ImxpbmstZ3Bpb3MiLCAwLAo+IC0JCQkJICAgICAgIEdQSU9EX0lOLCAibWRpbyIpOwo+IC0Jb2Zf bm9kZV9wdXQoZml4ZWRfbGlua19ub2RlKTsKPiAtCWlmIChJU19FUlIoZ3Bpb2QpKSB7Cj4gLQkJ aWYgKFBUUl9FUlIoZ3Bpb2QpID09IC1FUFJPQkVfREVGRVIpCj4gLQkJCXJldHVybiBncGlvZDsK PiAtCQlwcl9lcnIoImVycm9yIGdldHRpbmcgR1BJTyBmb3IgZml4ZWQgbGluayAlcE9GLCBwcm9j ZWVkIHdpdGhvdXRcbiIsCj4gLQkJICAgICAgIGZpeGVkX2xpbmtfbm9kZSk7Cj4gLQkJZ3Bpb2Qg PSBOVUxMOwo+IC0JfQo+IC0KPiAtCXJldHVybiBncGlvZDsKPiAtfQo+IC0jZWxzZQo+IC1zdGF0 aWMgc3RydWN0IGdwaW9fZGVzYyAqZml4ZWRfcGh5X2dldF9ncGlvZChzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wKQo+IC17Cj4gLQlyZXR1cm4gTlVMTDsKPiAtfQo+IC0jZW5kaWYKPiAtCj4gIHN0cnVj dCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIodW5zaWduZWQgaW50IGlycSwKPiAgCQkJ CSAgICAgIHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsCj4gLQkJCQkgICAgICBzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wKQo+ICsJCQkJICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCwK PiArCQkJCSAgICAgIHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kKQo+ICB7Cj4gIAlzdHJ1Y3QgZml4 ZWRfbWRpb19idXMgKmZtYiA9ICZwbGF0Zm9ybV9mbWI7Cj4gLQlzdHJ1Y3QgZ3Bpb19kZXNjICpn cGlvZCA9IE5VTEw7Cj4gIAlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5Owo+ICAJaW50IHBoeV9hZGRy Owo+ICAJaW50IHJldDsKPiBAQCAtMjQyLDExICsyMDUsNiBAQCBzdHJ1Y3QgcGh5X2RldmljZSAq Zml4ZWRfcGh5X3JlZ2lzdGVyKHVuc2lnbmVkIGludCBpcnEsCj4gIAlpZiAoIWZtYi0+bWlpX2J1 cyB8fCBmbWItPm1paV9idXMtPnN0YXRlICE9IE1ESU9CVVNfUkVHSVNURVJFRCkKPiAgCQlyZXR1 cm4gRVJSX1BUUigtRVBST0JFX0RFRkVSKTsKPiAgCj4gLQkvKiBDaGVjayBpZiB3ZSBoYXZlIGEg R1BJTyBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaXhlZCBwaHkgKi8KPiAtCWdwaW9kID0gZml4ZWRf cGh5X2dldF9ncGlvZChucCk7Cj4gLQlpZiAoSVNfRVJSKGdwaW9kKSkKPiAtCQlyZXR1cm4gRVJS X0NBU1QoZ3Bpb2QpOwo+IC0KPiAgCS8qIEdldCB0aGUgbmV4dCBhdmFpbGFibGUgUEhZIGFkZHJl c3MsIHVwIHRvIFBIWV9NQVhfQUREUiAqLwo+ICAJcGh5X2FkZHIgPSBpZGFfc2ltcGxlX2dldCgm cGh5X2ZpeGVkX2lkYSwgMCwgUEhZX01BWF9BRERSLCBHRlBfS0VSTkVMKTsKPiAgCWlmIChwaHlf YWRkciA8IDApCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMgYi9kcml2 ZXJzL25ldC91c2IvbGFuNzh4eC5jCj4gaW5kZXggM2Q5MmVhNmZjYzAyLi5iZDg4ZjBhZWYyZmEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYwo+ICsrKyBiL2RyaXZlcnMv bmV0L3VzYi9sYW43OHh4LmMKPiBAQCAtMjA1MSw3ICsyMDUxLDcgQEAgc3RhdGljIHN0cnVjdCBw aHlfZGV2aWNlICpsYW43ODAxX3BoeV9pbml0KHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KQo+ICAJ cGh5ZGV2ID0gcGh5X2ZpbmRfZmlyc3QoZGV2LT5tZGlvYnVzKTsKPiAgCWlmICghcGh5ZGV2KSB7 Cj4gIAkJbmV0ZGV2X2RiZyhkZXYtPm5ldCwgIlBIWSBOb3QgRm91bmQhISBSZWdpc3RlcmluZyBG aXhlZCBQSFlcbiIpOwo+IC0JCXBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihQSFlfUE9MTCwg JmZwaHlfc3RhdHVzLCBOVUxMKTsKPiArCQlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoUEhZ X1BPTEwsICZmcGh5X3N0YXR1cywgTlVMTCwgTlVMTCk7Cj4gIAkJaWYgKElTX0VSUihwaHlkZXYp KSB7Cj4gIAkJCW5ldGRldl9lcnIoZGV2LT5uZXQsICJObyBQSFkvZml4ZWRfUEhZIGZvdW5kXG4i KTsKPiAgCQkJcmV0dXJuIE5VTEw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvb2Yvb2ZfbWRpby5j IGIvZHJpdmVycy9vZi9vZl9tZGlvLmMKPiBpbmRleCBkZTYxNTczNTdlMjYuLjZiZTIxMjBiNWYw MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL29mL29mX21kaW8uYwo+ICsrKyBiL2RyaXZlcnMvb2Yv b2ZfbWRpby5jCj4gQEAgLTIwLDYgKzIwLDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L29mX21kaW8u aD4KPiAgI2luY2x1ZGUgPGxpbnV4L29mX25ldC5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4gIAo+ICAjZGVmaW5lIERF RkFVTFRfR1BJT19SRVNFVF9ERUxBWQkxMAkvKiBpbiBtaWNyb3NlY29uZHMgKi8KPiAgCj4gQEAg LTQ2MCw2ICs0NjEsNyBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRl dmljZV9ub2RlICpucCkKPiAgewo+ICAJc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgc3RhdHVzID0g e307Cj4gIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmZpeGVkX2xpbmtfbm9kZTsKPiArCXN0cnVjdCBn cGlvX2Rlc2MgKmdwaW9kID0gTlVMTDsKPiAgCXUzMiBmaXhlZF9saW5rX3Byb3BbNV07Cj4gIAlj b25zdCBjaGFyICptYW5hZ2VkOwo+ICAKPiBAQCAtNDgzLDcgKzQ4NSwxNyBAQCBpbnQgb2ZfcGh5 X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucCkKPiAgCQlzdGF0dXMu cGF1c2UgPSBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZml4ZWRfbGlua19ub2RlLCAicGF1c2UiKTsK PiAgCQlzdGF0dXMuYXN5bV9wYXVzZSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChmaXhlZF9saW5r X25vZGUsCj4gIAkJCQkJCQkgICJhc3ltLXBhdXNlIik7Cj4gKwo+ICsJCWdwaW9kID0gZ3Bpb2Rf Z2V0X2Zyb21fb2Zfbm9kZShmaXhlZF9saW5rX25vZGUsICJsaW5rLWdwaW9zIiwgMCwKPiArCQkJ CSAgICAgICBHUElPRF9JTiwgIm1kaW8iKTsKPiAgCQlvZl9ub2RlX3B1dChmaXhlZF9saW5rX25v ZGUpOwo+ICsJCWlmIChJU19FUlIoZ3Bpb2QpKSB7Cj4gKwkJCWlmIChQVFJfRVJSKGdwaW9kKSA9 PSAtRVBST0JFX0RFRkVSKQo+ICsJCQkJcmV0dXJuIFBUUl9FUlIoZ3Bpb2QpOwo+ICsJCQlwcl9l cnIoImVycm9yIGdldHRpbmcgR1BJTyBmb3IgZml4ZWQgbGluayAlcE9GLCBwcm9jZWVkIHdpdGhv dXRcbiIsCj4gKwkJCSAgICAgICBmaXhlZF9saW5rX25vZGUpOwo+ICsJCQlncGlvZCA9IE5VTEw7 Cj4gIGV4dGVybiBzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKHVuc2lnbmVk IGludCBpcnEsCj4gIAkJCQkJICAgICBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLAo+ IC0JCQkJCSAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCk7Cj4gKwkJCQkJICAgICBzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5wLAo+ICsJCQkJCSAgICAgc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2QpOwoK SGkgTW9yaXR6CgpJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byBhZGQgYSAKCmV4dGVybiBz dHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyX2dwaW9kKHVuc2lnbmVkIGludCBp cnEsCiAgICAgCQkJCQkgICAgIHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsCgkJCQkJ ICAgICBzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZCk7CgpJZiB5b3UgYXJlIG5vdCB1c2luZyBEVCwg dGhlIG5wIGlzIHBvaW50bGVzcy4gU28gbGV0cyBrZWVwIHRoZSBBUEkKc2ltcGxlLgoKCUFuZHJl dwo= 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=-8.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_MUTT 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 72A83C169C4 for ; Wed, 6 Feb 2019 21:53:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 32F8D218EA for ; Wed, 6 Feb 2019 21:53:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=lunn.ch header.i=@lunn.ch header.b="bCGyYQ5h" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726699AbfBFVxa (ORCPT ); Wed, 6 Feb 2019 16:53:30 -0500 Received: from vps0.lunn.ch ([185.16.172.187]:41612 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726037AbfBFVxa (ORCPT ); Wed, 6 Feb 2019 16:53:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Db5Q+dIqE4SX/ZWDE/9M3b3NTZWzTjuyzE6HWU2j1G8=; b=bCGyYQ5hNFRGxAQhSn4q8vUwpB jDqXZFoe54qJR33uU8kiuAwbcB+PadU+Tu8PjicY+4+G8TrSaEn/ZPfyylzFYIjQaBOPDFCwFdIWw XgDWPzhXsIxSlMdp2JaZg41reV5d6DwKEVbDbj8eapw0dgUi/x5UkTaQCsQfE6T2X5kU=; Received: from andrew by vps0.lunn.ch with local (Exim 4.89) (envelope-from ) id 1grV8E-0001gh-Oo; Wed, 06 Feb 2019 22:53:22 +0100 Date: Wed, 6 Feb 2019 22:53:22 +0100 From: Andrew Lunn To: Moritz Fischer Cc: linux-kernel@vger.kernel.org, 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, moritz@ettus.com, alex.williams@ni.com Subject: Re: [RFC net-next] net: fixed_phy: Move the DT based link GPIO parsing to of_mdio.c Message-ID: <20190206215322.GC32483@lunn.ch> References: <20190206205106.11517-1-mdf@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190206205106.11517-1-mdf@kernel.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 06, 2019 at 12:51:06PM -0800, Moritz Fischer wrote: > 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; > 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); Hi Moritz I think it would be better to add a extern struct phy_device *fixed_phy_register_gpiod(unsigned int irq, struct fixed_phy_status *status, struct gpio_desc *gpiod); If you are not using DT, the np is pointless. So lets keep the API simple. Andrew