Lines Matching refs:phy

40 	struct s3fwrn5_i2c_phy *phy = phy_id;
42 mutex_lock(&phy->mutex);
43 gpio_set_value(phy->gpio_fw_wake, wake);
45 mutex_unlock(&phy->mutex);
50 struct s3fwrn5_i2c_phy *phy = phy_id;
52 mutex_lock(&phy->mutex);
54 if (phy->mode == mode)
57 phy->mode = mode;
59 gpio_set_value(phy->gpio_en, 1);
60 gpio_set_value(phy->gpio_fw_wake, 0);
62 gpio_set_value(phy->gpio_fw_wake, 1);
66 gpio_set_value(phy->gpio_en, 0);
70 phy->irq_skip = true;
73 mutex_unlock(&phy->mutex);
78 struct s3fwrn5_i2c_phy *phy = phy_id;
81 mutex_lock(&phy->mutex);
83 mode = phy->mode;
85 mutex_unlock(&phy->mutex);
92 struct s3fwrn5_i2c_phy *phy = phy_id;
95 mutex_lock(&phy->mutex);
97 phy->irq_skip = false;
99 ret = i2c_master_send(phy->i2c_dev, skb->data, skb->len);
103 ret = i2c_master_send(phy->i2c_dev, skb->data, skb->len);
106 mutex_unlock(&phy->mutex);
124 static int s3fwrn5_i2c_read(struct s3fwrn5_i2c_phy *phy)
132 hdr_size = (phy->mode == S3FWRN5_MODE_NCI) ?
134 ret = i2c_master_recv(phy->i2c_dev, hdr, hdr_size);
141 data_len = (phy->mode == S3FWRN5_MODE_NCI) ?
154 ret = i2c_master_recv(phy->i2c_dev, skb_put(skb, data_len), data_len);
161 return s3fwrn5_recv_frame(phy->ndev, skb, phy->mode);
166 struct s3fwrn5_i2c_phy *phy = phy_id;
168 if (!phy || !phy->ndev) {
173 mutex_lock(&phy->mutex);
175 if (phy->irq_skip)
178 switch (phy->mode) {
181 s3fwrn5_i2c_read(phy);
188 mutex_unlock(&phy->mutex);
195 struct s3fwrn5_i2c_phy *phy = i2c_get_clientdata(client);
201 phy->gpio_en = of_get_named_gpio(np, "en-gpios", 0);
202 if (!gpio_is_valid(phy->gpio_en)) {
204 phy->gpio_en = of_get_named_gpio(np, "s3fwrn5,en-gpios", 0);
205 if (!gpio_is_valid(phy->gpio_en))
209 phy->gpio_fw_wake = of_get_named_gpio(np, "wake-gpios", 0);
210 if (!gpio_is_valid(phy->gpio_fw_wake)) {
212 phy->gpio_fw_wake = of_get_named_gpio(np, "s3fwrn5,fw-gpios", 0);
213 if (!gpio_is_valid(phy->gpio_fw_wake))
223 struct s3fwrn5_i2c_phy *phy;
226 phy = devm_kzalloc(&client->dev, sizeof(*phy), GFP_KERNEL);
227 if (!phy)
230 mutex_init(&phy->mutex);
231 phy->mode = S3FWRN5_MODE_COLD;
232 phy->irq_skip = true;
234 phy->i2c_dev = client;
235 i2c_set_clientdata(client, phy);
241 ret = devm_gpio_request_one(&phy->i2c_dev->dev, phy->gpio_en,
246 ret = devm_gpio_request_one(&phy->i2c_dev->dev, phy->gpio_fw_wake,
251 ret = s3fwrn5_probe(&phy->ndev, phy, &phy->i2c_dev->dev, &i2c_phy_ops,
256 ret = devm_request_threaded_irq(&client->dev, phy->i2c_dev->irq, NULL,
258 S3FWRN5_I2C_DRIVER_NAME, phy);
260 s3fwrn5_remove(phy->ndev);
267 struct s3fwrn5_i2c_phy *phy = i2c_get_clientdata(client);
269 s3fwrn5_remove(phy->ndev);