xiaoxiang781216 commented on code in PR #16999: URL: https://github.com/apache/nuttx/pull/16999#discussion_r2347459811
########## include/nuttx/net/mdio.h: ########## @@ -0,0 +1,208 @@ +/**************************************************************************** + * include/nuttx/net/mdio.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_NET_MDIO_H +#define __INCLUDE_NUTTX_NET_MDIO_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/compiler.h> +#include <stdint.h> +#include <nuttx/mutex.h> + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Forward references */ + +struct mdio_bus_s; +struct mdio_lowerhalf_s; + +/* This structure defines the interface for the MDIO lower-half driver. + * These methods are called by the upper-half MDIO driver. + */ + +struct mdio_ops_s +{ + /* Clause 22 MDIO Read. The first argument is a reference to the + * lower-half driver's private state. + */ + + int (*read)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, FAR uint16_t *value); + + /* Clause 22 MDIO Write */ + + int (*write)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, uint16_t value); + + /* PHY Reset. Optional. */ + + int (*reset)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr); +}; + +/* This structure defines the state of the MDIO lower-half driver. + * The chip-specific MDIO driver must allocate and initialize one instance + * of this structure. + */ + +struct mdio_lowerhalf_s +{ + /* The vtable of MDIO lower-half operations. + * This must be the first field. + */ + + FAR const struct mdio_ops_s ops; + + /* Opaque pointer to the lower-half driver's private state */ + + FAR void *priv; Review Comment: remove, lowerhalf should embed mdio_lowerhalf_s directly in private struct and restore by container_of or direct cast. ########## drivers/net/mdio.c: ########## @@ -0,0 +1,234 @@ +/**************************************************************************** + * drivers/net/mdio.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/config.h> +#include <nuttx/kmalloc.h> +#include <nuttx/mutex.h> +#include <nuttx/net/mdio.h> +#include <debug.h> + +/**************************************************************************** + * Public Defines + ****************************************************************************/ + +#define MDIO_READ(d,a,r,v) d->d_lower->ops.read(d->d_lower, a, r, v); + +#define MDIO_WRITE(d,a,r,v) d->d_lower->ops.write(d->d_lower, a, r, v); + +#define MDIO_RESET(d,a) d->d_lower->ops.reset(d->d_lower, a); Review Comment: remove all macro, but call the callback in mdio_xxx directly ########## include/nuttx/net/mdio.h: ########## @@ -0,0 +1,208 @@ +/**************************************************************************** + * include/nuttx/net/mdio.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_NET_MDIO_H +#define __INCLUDE_NUTTX_NET_MDIO_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/compiler.h> +#include <stdint.h> +#include <nuttx/mutex.h> + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Forward references */ + +struct mdio_bus_s; +struct mdio_lowerhalf_s; + +/* This structure defines the interface for the MDIO lower-half driver. + * These methods are called by the upper-half MDIO driver. + */ + +struct mdio_ops_s +{ + /* Clause 22 MDIO Read. The first argument is a reference to the + * lower-half driver's private state. + */ + + int (*read)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, FAR uint16_t *value); + + /* Clause 22 MDIO Write */ + + int (*write)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, uint16_t value); + + /* PHY Reset. Optional. */ + + int (*reset)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr); +}; + +/* This structure defines the state of the MDIO lower-half driver. + * The chip-specific MDIO driver must allocate and initialize one instance + * of this structure. + */ + +struct mdio_lowerhalf_s +{ + /* The vtable of MDIO lower-half operations. + * This must be the first field. + */ + + FAR const struct mdio_ops_s ops; + + /* Opaque pointer to the lower-half driver's private state */ + + FAR void *priv; +}; + +/* This is the opaque handle used by application code to access the + * MDIO bus. + */ + +struct mdio_bus_s Review Comment: move to mdio.c ########## include/nuttx/net/mdio.h: ########## @@ -0,0 +1,208 @@ +/**************************************************************************** + * include/nuttx/net/mdio.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_NET_MDIO_H +#define __INCLUDE_NUTTX_NET_MDIO_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/compiler.h> +#include <stdint.h> +#include <nuttx/mutex.h> + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Forward references */ + +struct mdio_bus_s; +struct mdio_lowerhalf_s; + +/* This structure defines the interface for the MDIO lower-half driver. + * These methods are called by the upper-half MDIO driver. + */ + +struct mdio_ops_s +{ + /* Clause 22 MDIO Read. The first argument is a reference to the + * lower-half driver's private state. + */ + + int (*read)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, FAR uint16_t *value); + + /* Clause 22 MDIO Write */ + + int (*write)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, uint16_t value); + + /* PHY Reset. Optional. */ + + int (*reset)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr); +}; + +/* This structure defines the state of the MDIO lower-half driver. + * The chip-specific MDIO driver must allocate and initialize one instance + * of this structure. + */ + +struct mdio_lowerhalf_s +{ + /* The vtable of MDIO lower-half operations. + * This must be the first field. + */ + + FAR const struct mdio_ops_s ops; Review Comment: ```suggestion FAR const struct mdio_ops_s *ops; ``` ########## include/nuttx/net/mdio.h: ########## @@ -0,0 +1,208 @@ +/**************************************************************************** + * include/nuttx/net/mdio.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_NET_MDIO_H +#define __INCLUDE_NUTTX_NET_MDIO_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <nuttx/compiler.h> +#include <stdint.h> +#include <nuttx/mutex.h> + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Forward references */ + +struct mdio_bus_s; +struct mdio_lowerhalf_s; + +/* This structure defines the interface for the MDIO lower-half driver. + * These methods are called by the upper-half MDIO driver. + */ + +struct mdio_ops_s +{ + /* Clause 22 MDIO Read. The first argument is a reference to the + * lower-half driver's private state. + */ + + int (*read)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, FAR uint16_t *value); + + /* Clause 22 MDIO Write */ + + int (*write)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr, + uint8_t regaddr, uint16_t value); + + /* PHY Reset. Optional. */ + + int (*reset)(FAR struct mdio_lowerhalf_s *lower, uint8_t phyaddr); +}; + +/* This structure defines the state of the MDIO lower-half driver. + * The chip-specific MDIO driver must allocate and initialize one instance + * of this structure. + */ + +struct mdio_lowerhalf_s +{ + /* The vtable of MDIO lower-half operations. + * This must be the first field. + */ + + FAR const struct mdio_ops_s ops; + + /* Opaque pointer to the lower-half driver's private state */ + + FAR void *priv; +}; + +/* This is the opaque handle used by application code to access the + * MDIO bus. + */ + +struct mdio_bus_s +{ + /* Pointer to the lower-half driver's state */ + + FAR struct mdio_lowerhalf_s *d_lower; Review Comment: ```suggestion FAR struct mdio_lowerhalf_s *lower; ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org